MySQL连接两张表时如何添加字段标识数据所属的源表
SQL多表合并查询解决方案
现有查询的问题
你当前使用的SELECT NAME, ID FROM A JOIN B USING (NAME, ID)是内连接逻辑,只会返回两张表中NAME、ID同时匹配的行,无法拿到A、B两张表的全量独立数据,不符合你要合并两张表行数据的需求,无法通过单纯在原有查询上加字段实现要求。
正确实现方式
你需要用UNION ALL拼接两个独立子查询的结果,分别在子查询中定义FROM_WHERE的固定值即可,最终SQL如下:
SELECT NAME, ID, 'A' AS FROM_WHERE FROM A UNION ALL SELECT NAME, ID, 'B' AS FROM_WHERE FROM B
逻辑说明
- 第一个子查询从表A取数,给
FROM_WHERE字段赋值固定常量'A'标记数据来源 - 第二个子查询从表B取数,给
FROM_WHERE字段赋值固定常量'B'标记数据来源 UNION ALL直接拼接两个结果集,不会做额外去重处理,执行效率更高,完全匹配你的预期输出要求
内容的提问来源于stack exchange,提问作者Anat's
相关产品推荐
相关产品推荐

