@MasterCopipaster

Как сделать в sql запросе сортировку по двум условиям для двух выборок?

У меня есть таблица с таким содержимым
id    |guid                                |sort|
------|------------------------------------|----|
239980|                                    |   1|
354533|666a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   0|
354538|                                    |   2|
354540|787a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   1|


Я хочу отсортировать записи по полю sort но так что бы записи у которых guid != NULL были отсортированы по своему sort и были всегда в верху а остальные были ниже.
Короче говоря я хочу сделать с начало так
SELECT id,guid,sort from images where model_id = 102188 and guid is not null order BY sort DESC;


id    |guid                                |sort|
------|------------------------------------|----|
354540|787a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   1|
354533|666a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   0|


Потом так

SELECT id,guid,sort from images where model_id = 102188 and guid is null order BY sort DESC;

id    |guid|sort|
------|----|----|
354538|    |   2|
239980|    |   1|


Мне надо как то объединить эти два запроса, если проще склеить их результат так что бы получилось по итогу

id    |guid                                |sort|
------|------------------------------------|----|
354540|787a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   1|
354533|666a9a7d-b2ed-11eb-8b8b-9c5c8e4f1f67|   0|
354538|                                    |   2|
239980|                                    |   1|

Обратите внимание что сначала отсортированы записи с полем guid а потом те у которых нет.

Я думал объединить запросы с помощью UNION или UNION ALL но беда в том что оно так не работает
SQL Error [1221] [HY000]: Incorrect usage of UNION and ORDER BY
при использование UNION нельзя использовать ORDER BY - собственно как можно сделать то что я хочу?
  • Вопрос задан
  • 65 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
ORDER BY `guid` IS NULL, `sort` DESC
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы