a union all b,没有重复的数据,然后都有x字段,x的数据是属于哪个表的。。
select * from a union all b
其实就是先查a表,放在查询结果的最上面,然后再查b表,把b表数据拼在刚刚查出来的a表数据的下面。
你说的x字段,当然来自a表的数据属于a表,来自b表的数据属于b表呗。
如果你是想区分,某行数据来自哪个表,那么需要在这个SQL上加一个查询字段
select 'A' 来源,a.* from a
union all
select 'B' ,b.* from b;
union all关键字的意思是合并多张表数据,合并的字段必须一致。
x字段肯定是在a,b表中都存在的。
如果存在重复的数据,去重后,不用在乎重复的数据真正来自于哪张表,查询的结果作为视图数据而已。
没有重复数据,那原来是哪个张的数据就是哪张表的数据啊。如果有重复的数据,x字段在哪张表都是一样的,还有必要区分是哪张表的吗
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值,而UNION 命令只会选取不同的值。
如果想知道是来自哪个表,可以加上一个自定义字段返回来标识
SELECT Id,Name,Age,"Person_A" as TableName FROM Person_A
UNION ALL
SELECT Id,Name,Age,"Person_B" as TableName FROM Person_B