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

如何编写SQL查询合并两个结构相似表并按date字段排序

合并两张表按日期排序的SQL实现

需求说明

  • 两张表TABLE_A、TABLE_B结构一致,均包含字段:id、content、date
  • 需要将两张表所有数据合并后,按date字段统一排序输出

测试数据参考:

  • TABLE_A存储数据:(1,Joe,20-11-2020)、(2,John,20-11-2021)
  • TABLE_B存储数据:(1,Luke,20-11-2010)、(1,Mark,20-11-2011)
  • 预期排序结果:(1,Luke,20-11-2010)、(1,Mark,20-11-2011)、(1,Joe,20-11-2020)、(2,John,20-11-2021)

实现SQL

用UNION ALL完成两张表的数据合并,再在外层查询做统一排序即可。不要用UNION——UNION会自带去重逻辑,性能更低,还可能误删两张表中重复的有效数据。

SELECT id, content, `date`
FROM (
    SELECT id, content, `date` FROM TABLE_A
    UNION ALL
    SELECT id, content, `date` FROM TABLE_B
) AS merged_data
ORDER BY `date` ASC;

注意事项

  • 如果你的date字段存的是字符串格式(比如示例中的DD-MM-YYYY格式字符串),一定要先转成日期类型再排序,否则会按字符串字典序排序导致结果错乱。以MySQL为例,转换后的写法如下:
SELECT id, content, `date`
FROM (
    SELECT id, content, STR_TO_DATE(`date`, '%d-%m-%Y') AS `date` FROM TABLE_A
    UNION ALL
    SELECT id, content, STR_TO_DATE(`date`, '%d-%m-%Y') AS `date` FROM TABLE_B
) AS merged_data
ORDER BY `date` ASC;
  • 如果后续需要区分数据来源,可以在子查询中新增来源字段,例如SELECT id, content, date, 'A' AS table_source FROM TABLE_A。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:57:17