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

PHP场景下如何在MySQL中合并3张表数据并按created_at排序

MySQL多表合并指定字段并按时间排序

可以通过UNION ALL(或UNION)结合ORDER BY实现需求,具体SQL语句如下:

基础方案(保留重复数据,效率更高)

如果不需要对三张表的重复记录去重,优先使用UNION ALL:

SELECT name, age, created_at FROM t1
UNION ALL
SELECT name, age, created_at FROM t2
UNION ALL
SELECT name, age, created_at FROM t3
ORDER BY created_at;

去重方案(自动移除重复记录)

如果需要合并时自动去除三张表中完全相同的name、age、created_at记录,使用UNION:

SELECT name, age, created_at FROM t1
UNION
SELECT name, age, created_at FROM t2
UNION
SELECT name, age, created_at FROM t3
ORDER BY created_at;

关键说明

  • 每个子查询仅提取需要的name、age、created_at字段,自动忽略表中其他无关字段
  • ORDER BY必须放在整个语句的最后,确保对合并后的全部结果排序,而非单个子表的结果
  • 默认按created_at升序排列(时间从早到晚),如需降序(最新时间在前),可改为ORDER BY created_at DESC

执行该SQL后,返回的结果集已经按时间顺序排列,PHP端直接遍历结果即可,无需额外排序处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:33:15