Сортировка строк производится после выполнения операции над множествами. Следственно, в конструкции ORDER BY могут быть использованы только названия столбцов результата. Обращение к столбцу таблицы запрещено.
ORDER BY добавляется в конце запроса. Например:
SELECT *
FROM table1
UNION
SELECT *
FROM table2
| # | value | name |
|---|---|---|
| 1 | 5 | five |
| 2 | 4 | four |
| 3 | 2 | two |
| 4 | 1 | one |
| 5 | 3 | three |
SELECT *
FROM table1
UNION
SELECT *
FROM table2
ORDER BY value
| # | value | name |
|---|---|---|
| 1 | 1 | one |
| 2 | 2 | two |
| 3 | 3 | three |
| 4 | 4 | four |
| 5 | 5 | five |
Запрещено использовать конструкцию ORDER BY в подзапросах, результаты которых подвергаются операциям над множествами.
SELECT *
FROM table1
ORDER BY name
UNION ALL
SELECT *
FROM table2
syntax error at or near "UNION"