如何在MySQL UNION ALL联合查询中识别数据来源表?
解决方案:给查询结果添加来源表标识
很简单,你只需要在两个子查询里分别新增一个自定义字段,用来明确标记每条数据来自哪个表就行。这样前端拿到结果后,直接读取这个字段的值,就能区分是来自comments还是comments_reply,进而处理模态框的不同逻辑。
修改后的SQL语句如下:
SELECT * FROM ( ( SELECT *, 'comments' AS source_table FROM comments WHERE user_id = '66' AND product_id = '3' AND status = 1 ) UNION ALL ( SELECT *, 'comments_reply' AS source_table FROM comments_reply WHERE user_id = '66' AND product_id = '3' AND status = 1 ) ) results ORDER BY datetime DESC;
关键说明:
- 在每个子查询里添加了
'comments' AS source_table和'comments_reply' AS source_table,这会给每条结果新增一个名为source_table的字段,值就是对应的表名。 - 保持
UNION ALL不变,因为它不会去除重复数据,能完整保留两张表的所有符合条件的记录,这应该也是你原本的需求。 - 前端拿到数据后,只需要判断
source_table的值是comments还是comments_reply,就能针对性地处理模态框的展示逻辑了。
内容的提问来源于stack exchange,提问作者Mad Coder
相关产品推荐
相关产品推荐

