繁体   English   中英

如何合并两个 SQL 表而没有重复的单列?

[英]How to merge two SQL tables without duplicates of a single column?

如何从不同的 SQL 表导入所有值,仅导入具有非重复“b”条目的行。 因为 'b' 符号在我的表中是唯一的字符串。 两个表都有ca。 5mio 入门。

A_Table
structure
'id', 'a', 'b', 'c', 'd'

B_Table
structure
'a', 'b', 'c'

从 B_Table 添加到 A_Table where 'A_Table.b' !found in 'B_Table.b'

例子:

一张桌子

    1, "a1", "Hallo1", "c", "d"
    2, "a1", "Hallo2", "c", "d"
    3, "a1", "Hallo3", "c", "d"
    4, "a1", "Hallo5", "c", "d"
    5, "a1", "Hallo7", "c", "d"
    6, "a1", "Hallo8", "c", "d"
    

B_表

    "a2", "Hallo1", "c"
    "a2", "Hallo2", "c"
    "a2", "Hallo3", "c"
    "a2", "Hallo4", "c"
    "a2", "Hallo5", "c"
    "a2", "Hallo6", "c"
    "a2", "Hallo9", "c" 
    

查询后的A_Table

    1, "a1", "Hallo1", "c", "d"
    2, "a1", "Hallo2", "c", "d"
    3, "a1", "Hallo3", "c", "d"
    4, "a1", "Hallo5", "c", "d"
    5, "a1", "Hallo7", "c", "d"
    6, "a1", "Hallo8", "c", "d"
    7, "a2", "Hallo4", "c", ""
    8, "a2", "Hallo6", "c", ""
    9, "a2", "Hallo9", "c", ""

我想你想要union all

insert into a_table (a, b, c, d)
    select a, b, c, ''
    from b_table b 
    where not exists (select 1 from a_table a where a.b = b.b);

如果您关心性能,则需要a_table(b)上的索引。

这假设id是自动分配的。

如果你只想要一个结果集,那么union all

select id, a, b, c, d
from b_table a
union all
select a.max_id + row_number() over (order by b.a, b.b, b.c),
       b.a, b.b, b.c, ''
from b_table b cross join
     (select max(id) as max_id from table_a) a
where not exists (select 1 from a_table a where a.b = b.b);

尝试这个:

insert into A_Table (a,b,c)
(select B_Table.a, B_Table.b, B_Table.c from B_Table left join A_Table on 
 A_Table.b=B_Table.b where A_Table.id is null)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM