我有需要根据以下条件对其查询结果进行排序的表:

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/

10-10 23:48