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
相关产品推荐
相关产品推荐

