Подтвердить что ты не робот

Как использовать порядок с помощью union all в sql?

Я попробовал sql-запрос, указанный ниже:

SELECT * FROM (SELECT * 
FROM TABLE_A ORDER BY COLUMN_1)DUMMY_TABLE
UNION ALL 
SELECT * FROM TABLE_B 

Это приводит к следующей ошибке:

Предложение ORDER BY недопустимо в представлениях, встроенных функциях, полученных таблицы, подзапросы и общие выражения таблицы, если только TOP или FOR Также указывается XML.

Мне нужно использовать порядок в объединении всех. Как это сделать?

4b9b3361

Ответ 1

SELECT  * 
FROM 
        (
            SELECT * FROM TABLE_A 
            UNION ALL 
            SELECT * FROM TABLE_B
        ) dum
-- ORDER BY .....

но если вы хотите, чтобы все записи из Table_A находились в верхней части списка результатов, вы можете добавить пользовательское значение, которое вы можете использовать для заказа,

SELECT  * 
FROM 
        (
            SELECT *, 1 sortby FROM TABLE_A 
            UNION ALL 
            SELECT *, 2 sortby FROM TABLE_B
        ) dum
ORDER   BY sortby 

Ответ 2

Вам не обязательно иметь скобки. Вы можете сортировать напрямую:

SELECT *, 1 AS RN FROM TABLE_A
UNION ALL 
SELECT *, 2 AS RN FROM TABLE_B
ORDER BY RN, COLUMN_1

Ответ 3

Не прямая реакция OP, но я думал, что буду вдаваться в нее, особенно в ответ на сообщение ER ERROR, которое указывает на вас в другом направлении.

Все эти ответы относятся к общему ORDER BY, как только набор записей был извлечен, и вы сортируете лот.

Что делать, если вы хотите ORDER BY каждую часть UNION независимо, и все еще хотите, чтобы они "присоединились" к тому же SELECT?

SELECT pass1.* FROM 
 (SELECT TOP 1000 tblA.ID, tblA.CustomerName 
  FROM TABLE_A AS tblA ORDER BY 2) AS pass1
UNION ALL 
SELECT pass2.* FROM 
  (SELECT TOP 1000 tblB.ID, tblB.CustomerName 
   FROM TABLE_B AS tblB ORDER BY 2) AS pass2

Обратите внимание, что TOP 1000 является суровым номером. Используйте достаточно большое количество, чтобы захватить все требуемые данные.

Ответ 4

Select 'Shambhu' as ShambhuNewsFeed,Note as [News Fedd],NotificationId
from Notification with(nolock) where [email protected] 
Union All 
Select 'Shambhu' as ShambhuNewsFeed,Note as [Notification],NotificationId
from Notification with(nolock) 
where [email protected] 
order by NotificationId desc