我试图归档的是从类似的表中获取数据(列结构相同),但也返回一列 table_origin
允许以后识别表。
我曾尝试在mysql中实现类似的功能,但到目前为止没有成功。
可能是这样(不起作用)的例子:
SELECT * FROM (
SELECT *, 44 as table_origin FROM `CustomerData_44`
) AS a FULL OUTER JOIN (
SELECT *, 58 as table_origin FROM `CustomerData_58`
) AS b ON true;
2条答案
按热度按时间31moq8wy1#
当需要所有值时,请使用union all
声明联合使不同
https://dev.mysql.com/doc/refman/5.5/en/union.html
联合和全体联合有什么区别?
4urapxun2#
如果您试图用
table_origin
作为标识符列,然后可以尝试UNION
多个select语句而不是使用join。每个
SELECT
语句与所选表不同,并添加一列table_origin
结果,以便您稍后识别它。当需要包含重复值时,可以使用
UNION ALL
而不是UNION
:的默认行为
UNION
是从结果中删除重复行。可选的DISTINCT
关键字除了默认值之外没有其他效果,因为它还指定删除重复行。与可选ALL
关键字,则不会删除重复行,并且结果包括所有行中的所有匹配行SELECT
声明。但是,在上面的例子中,我们向子查询添加了一个label字段,只要标签不同,我们就只能在源表中已经存在重复行的情况下遇到重复行。如果您有一个唯一的非空列(如自动递增
id
通常)这是不可能发生的。