Можно ли заказать, когда данные поступают от многих избранных и объединить их вместе? Такие как
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Как я могу заказать этот запрос по имени.
Некоторые говорили, что вы можете сделать запрос похожим
Select id,name,age
From Student
Where age < 15 or name like "%a%"
Order by name
Но в этом случае я просто игнорирую это решение.
sql
sql-order-by
union
Guilgamos
источник
источник
Ответы:
Просто пиши
порядок по применяется к полному набору результатов
источник
источник
xxx UNION yyy ORDER BY zzz
его эквивалентным(xxx UNION yyy) ORDER BY zzz
Чтобы применить сортировку только к первому оператору в UNION, вы можете поместить его в подвыбор с помощью UNION ALL (оба они необходимы в Oracle):
Или (обращаясь к комментарию Николаса Кэри) вы можете гарантировать, что верхний SELECT упорядочен, а результаты отображаются над нижним SELECT следующим образом:
источник
select
оператора, ссылающегося на этот подпункт. Согласно стандарту SQL порядок результатов не определен, за исключением явногоorder by
предложения. Это первоеselect
в вашем примере, вероятно, возвращает свои результаты в порядке, возвращенном подвыбором, но это не гарантируется. Кроме того, это не * гарантирует * порядок упорядочения результирующего набора целикомunion
(то же правило в Стандарте). Если вы зависите от порядка, вас, в конце концов, укусят.SELECT
.Оба других ответа верны, но я подумал, что стоит отметить, что место, где я застрял, не понимает, что вам потребуется порядок по псевдониму, и убедитесь, что псевдоним одинаков для обоих вариантов выбора ...
обратите внимание, что я использую одинарные кавычки в первом выборе, но для других используется обратная галочка.
Это даст вам необходимую сортировку.
источник
SELECT a, b, c FROM (<insert union query here>) AS x;
если вы действительно хотите избежать возврата дополнительного столбца.Order By
применяется послеunion
, так что просто добавьтеorder by
предложение в конце операторов:источник
Если я хочу, чтобы сортировка применялась только к одному из UNION, если используется Union all:
источник
Как указывалось в других ответах, 'Order by' после LAST Union должен применяться к обоим наборам данных, к которым присоединяется union.
У меня было два набора данных, но с использованием разных таблиц, но одинаковых столбцов. «Order by» после того, как LAST Union все еще не работал. Использование ALIAS для столбца, используемого в порядке упорядочения, добилось цели.
Поэтому решение - использовать псевдоним 'User_Name':
источник
Можно использовать это:
источник