union all後数据来源哪张表

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

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632