我有需要根据以下条件对其查询结果进行排序的表:
1)排名值等于或大于100(从高到低排序)
2)List_Date-最近90天内最新到最旧的日期。
3)排名值小于100(从高到低排序)
我尝试了以下操作,但意识到它无法按照MySQL文档的要求工作,“因为默认情况下UNION会生成无序的行集。”
(SELECT Ranking, List_Date
FROM example_table
WHERE Ranking > 100
ORDER BY Ranking DESC)
UNION
(SELECT Ranking, List_Date
FROM example_table
WHERE List_Date BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
ORDER BY List_Date DESC)
UNION
(SELECT Ranking, List_Date
FROM example_table
WHERE Ranking < 100
ORDER BY Ranking DESC)
我想弄清楚如何保持这三个语句的顺序。可能?
最佳答案
看起来您不需要使用UNION
作为可以使用OR
组合条件的位置。尝试这个:
SELECT Ranking, List_Date
FROM example_table
WHERE Ranking <> 100
OR List_Date BETWEEN CURDATE() - INTERVAL 90 DAY AND CURDATE()
ORDER BY Ranking, List_Date DESC
关于mysql - 将三个MySQL查询结果合并为正确排序的一个结果,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33546941/