我有这样的查询:
(SELECT * FROM something WHERE ...) UNION (SELECT * FROM something WHERE ...)
因为我希望第一个 SELECT
的结果排在最前面。但是,第二部分以相反的顺序出现。我不能简单地对整个查询进行排序,因为它会将我需要的第一个 SELECT
从顶部推到底部......所以我想做这样的事情:
(SELECT * FROM something WHERE ...) UNION (SELECT * FROM something WHERE ... ORDER BY timestamp DESC)
但是这是行不通的,ORDER BY
被完全忽略了;我通过插入乱码对此进行了测试,ORDER BY dosaif30h
仍然有效...一种解决方案是进行两个单独的查询,但我更愿意将其合并处理。
最佳答案
SELECT * FROM something WHERE ... UNION SELECT * FROM (SELECT * FROM something WHERE ... ORDER BY timestamp DESC)a
关于MySQL:无法对联合的一侧进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27934851/