Как переписать этот запрос, чтобы не использовать предложение union



Как переписать этот запрос, чтобы не использовать предложение UNION (UNION ALL):



SELECT
c
FROM a
UNION
SELECT
c
FROM b


Ожидаемый результат (набор записей должен быть одинаковым):



SELECT
c
FROM ....
607   1  

1 ответ:

Чтобы получить те же результаты, что и ваш запрос выше, вы можете сделать следующее:

SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
    ON b.c = a.c
Однако это даст вам те же результаты, что и объединение, которое не совсем совпадает с объединением ALL (поскольку дубликаты будут удалены). Чтобы выполнить объединение всех, вам нужно сделать то же самое, но условие соединения не выполняется:
SELECT COALESCE(a.c, b.c) AS c
FROM a
FULL OUTER JOIN b
    ON 1 = 0
В любом случае, я не уверен, что это будет намного быстрее, чем сделать это с помощью UNION.

Comments

    Ничего не найдено.