упорядочить по набору 1 союзу установить 2 sql - PullRequest
0 голосов
/ 31 октября 2018

У меня такая ситуация:

select name, 
       subject 
from Table_1 
where date > getdate()-1 
group by name, subject 
order by id desc
union
select name, 
       subject 
from table_2 
where name not like 'abc%'

Таблица_1 и таблица_2 имеют похожую структуру.

Мне нужно сделать заказ в SET1 UNION SET 2

Это не разрешено на сервере sql. говорит "элементы ORDER BY должны появиться в списке выбора". Я не понимаю, почему проблема. Я выбираю одинаковое количество столбцов в обоих запросах. только то, что я хочу получить результат вместе. (в SQL Server 2017)

Кто-нибудь, помогите !!

Заранее спасибо.

1 Ответ

0 голосов
/ 31 октября 2018

Разработка моего комментария

select name, 
       subject 
from Table_1 
where date > getdate()-1 
--group by name, subject --this isn't needed
union
select name, 
       subject 
from table_2 
where name not like 'abc%'
order by <yourCol> desc --notice change here

А для условного заказа на есть несколько постов по этому вопросу.

Кроме того, вам не нужна группа, поскольку union удаляет дубликаты.

Но ошибка очевидна: столбец, по которому вы хотите упорядочить, должен содержаться в списке выбора ...

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

select name, 
       subject,
       1 as Sort
from Table_1 
where date > getdate()-1 
--group by name, subject --this isn't needed
union
select name, 
       subject,
       2 as Sort 
from table_2 
where name not like 'abc%'
order by Sort asc--notice change here
...