Задать вопрос
Protossan
@Protossan
студент

Почему не работает UNION ALL запрос?

Необходимо сделать сложную выборку из таблицы с сортировкой для разных условий. Когда делаю два запроса по отдельности то все работает, а если объединяю, то выводит без сортировок - по росту ключевого поля таблицы
(SELECT * FROM `user` WHERE `user`.`rank_golos` >=22.1 order by `user`.rank_yearnub DESC, `user`.rank_golos DESC) UNION ALL (SELECT * FROM `user` WHERE `user`.`rank_golos` <22.1 and `user`.`rank_golos` >0 order by `user`.rank_golos DESC, `user`.rank_yearnub DESC)

В чем может быть проблема?
  • Вопрос задан
  • 985 просмотров
Подписаться 1 Простой Комментировать
Ответ пользователя Immortal_pony К ответам на вопрос (2)
Immortal_pony
@Immortal_pony Куратор тега MySQL
Сортируйте результаты объединения запроса.
SELECT
    inner.*
FROM (
    SELECT * FROM `user` WHERE `user`.`rank_golos`>=22.1
    UNION
    SELECT * FROM `user` WHERE `user`.`rank_golos` <22.1 AND `user`.`rank_golos`>0
) AS inner
ORDER BY 
     `inner`.rank_yearnub DESC, 
     `inner`.rank_golos DESC


Хотя в вашем случае вообще никакой UNION не нужен.
SELECT 
    `user` . * 
FROM 
    `user` 
WHERE 
    `user`.`rank_golos`>=22.1
OR 
    (`user`.`rank_golos`<22.1 AND `user`.`rank_golos`>0)
ORDER BY 
     `user`.rank_yearnub DESC, 
     `user`.rank_golos DESC
Ответ написан