eblinkoff
@eblinkoff
придурок

Как выгрузить из бд сначала по одному условию, а потом по другому одним запросом?

Например, есть запрос:
SELECT *
FROM table
WHERE 1
ORDER BY field1 DESC, field2 ASC
В нём сначала сортируется по field1, а потом по field2. Можно ли сделать чтобы аналогично сначала выгружались записи по одному условию (например, field1=0), а потом по другому условию (например, field2=1) и всё это в одном запросе?
  • Вопрос задан
  • 191 просмотр
Решения вопроса 1
@AUser0
Чем больше знаю, тем лучше понимаю, как мало знаю.
Может так?
SELECT *
FROM table
WHERE field1=0 OR field2=1
ORDER BY field1=0 DESC, field1 DESC, field2=1 DESC, field2 ASC
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
IgorPI
@IgorPI
Нет, так невозможно.
Выполняйте запросы по отдельности, а после обрабатывайте и отдавайте пользователю данные.
Ответ написан
Комментировать
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
(SELECT `field1`, `field2`, 0 AS `order`
  FROM `table`
  WHERE `field1` = 0)
UNION (SELECT `field1`, `field2`, 1
  FROM `table`
  WHERE `field2` = 1)
ORDER BY `order`

Только учитывайте, что некоторые строки могут выгрузиться два раза - по каждому из условий.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы