You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从多张表中按日期排序合并查询结果?

解决UNION合并后按Date排序的问题

嘿,我懂你的困扰了——你想把两个表的UID合并后按Date字段整体排序,但当前的SQL语句只是把两个表的结果按顺序拼接,完全没达到按日期排序的效果。

问题出在哪?

你原来的SQL里,每个子查询的ORDER BY DATE DESC其实只和后面的LIMIT 16配合,用来筛选各自表的前16条数据,但UNION操作并不会保留子查询的排序结果,它只是把两个子查询的结果集简单拼接在一起,所以才会先显示table1的所有行,再显示table2的。

正确的SQL写法

要实现整体按Date排序,你需要把UNION合并后的结果作为一个临时表,再在外层对这个临时表进行排序:

SELECT UID
FROM (
    -- 先合并两个表的UID和Date字段,各自取前16条
    SELECT UID, Date FROM table1 LIMIT 16
    UNION
    SELECT UID, Date FROM table2 LIMIT 16
) AS combined_result
-- 对合并后的整体结果按Date升序排序(对应你期望的结果顺序)
ORDER BY Date ASC;

补充说明

  • 如果你担心两个表中有重复的UID,可以把UNION换成UNION ALL(不过看你的示例数据没有重复,两种都可以,但UNION ALL性能更好,因为不会去重)。
  • 外层的ORDER BY Date ASC对应你期望的结果顺序:smith(Date=1) → John(Date=2) → Nork(Date=3) → mark(Date=4),如果要倒序就改成DESC。

内容的提问来源于stack exchange,提问作者Abdul

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:54:07