Ответ 1
Просто напишите
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Order by name
порядок by применяется к полному набору результатов
Можно ли заказать, когда данные поступают из многих элементов select и union it.Such как
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
Но в этом случае я просто игнорирую это решение.
Спасибо заранее.
Просто напишите
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
Order by name
порядок by применяется к полному набору результатов
Select id,name,age
from
(
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like "%a%"
) results
order by name
Оба других ответа верны, но я подумал, что стоит отметить, что место, где я застрял, не понимает, что вам понадобится заказ по псевдониму и убедитесь, что псевдоним одинаковый для обоих вариантов.. поэтому
select 'foo'
union
select item as `foo`
from myTable
order by `foo`
обратите внимание, что я использую одинарные кавычки в первом выборе, но обратные для других.
Это поможет вам сортировать.
Чтобы сортировка применима только к первому оператору в UNION, вы можете поместить его в подзадачу с UNION ALL (оба они кажутся необходимыми в Oracle):
Select id,name,age FROM
(
Select id,name,age
From Student
Where age < 15
Order by name
)
UNION ALL
Select id,name,age
From Student
Where Name like "%a%"
Или (обращаясь к комментарию Николаса Кэри) вы можете гарантировать, что верхний SELECT упорядочен, и результаты отображаются над нижним SELECT следующим образом:
Select id,name,age, 1 as rowOrder
From Student
Where age < 15
UNION
Select id,name,age, 2 as rowOrder
From Student
Where Name like "%a%"
Order by rowOrder, name
Если я хочу, чтобы сортировка применялась только к одному из UNION, если вы используете Union all:
Select id,name,age
From Student
Where age < 15
Union all
Select id,name,age
From
(
Select id,name,age
From Student
Where Name like "%a%"
Order by name
)
Order By
применяется после union
, поэтому просто
добавьте предложение Order By
в конце инструкций:
Select id,name,age
From Student
Where age < 15
Union
Select id,name,age
From Student
Where Name like '%a%'
Order By name