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

Как заказать с помощью союза

Можно ли заказать, когда данные поступают из многих элементов 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

Но в этом случае я просто игнорирую это решение.

Спасибо заранее.

4b9b3361

Ответ 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 применяется к полному набору результатов

Ответ 2

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

Ответ 3

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

select 'foo'
union
select item as `foo`
from myTable
order by `foo`

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

Это поможет вам сортировать.

Ответ 4

Чтобы сортировка применима только к первому оператору в 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

Ответ 5

Если я хочу, чтобы сортировка применялась только к одному из 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
)

Ответ 6

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