尝试将具有相同字段的两个表合并到一个主表中,但由于某种原因,我得到了一个奇怪的结果。
select count(*)
from staging.sandoval_parcels
where parcel_id = 0;
返回0
select count(*)
from staging.bernalillo_parcels
where parcel_id = 0;
返回0
但是当我使用
合并表格时CREATE TABLE staging.master_parcels
AS
SELECT * FROM bernalillo_parcels
UNION ALL
SELECT * FROM sandoval_parcels
;
然后
select count(*)
from staging.master_parcels
where parcel_id = 0;
返回85553
两个表都有相同的字段,字段是相同的数据类型,也没有任何字段的值丢失,因此没有空值,为什么当表中的任何一个具有parcel_ids = 0时,我得到ids = 0 ?
答案 0 :(得分:2)
字段的顺序很重要,替换显式名称的*
,否则第二个查询字段将插入第一个查询位置。但不一定在你想要的同一个领域。
CREATE TABLE staging.master_parcels
AS
SELECT parcel_id, field1 ... FROM bernalillo_parcels
UNION ALL
SELECT parcel_id, field1 ... FROM sandoval_parcels
;
答案 1 :(得分:0)
即使列顺序不相同,Union也会合并表。如果所有列都匹配且顺序相同,则它将合并不同的值,如果每个表的行相同,则不会创建重复项。订单和数据类型相同是很重要的。