将唯一数据从一个 table 复制到另一个
Copy unique data from one table to another
我有两个 table。 Table A
为主table,table B
为辅table。现在我需要从 table B
复制到 table A
只有 aux_id
不存在于 table A
中的行
table_A
id |aux_id | firstname | lastname
table_B
aux_id | firstname | lastname
我正在尝试,但显然没有成功。
INSERT INTO table_A(aux_id,firstname,lastname)(SELECT aux_id,firstname,lastname FROM table_B WHERE aux_id != aux_id);
我得到:INSERT 0 0
这是错误的,因为我确定我在 table B.
中有新条目
有很多方法可以做到这一点(left join
、not exists
、not in
)。如果你正在学习 SQL, NOT IN
, 可能是第一次遇到最简单的:
INSERT INTO table_A(aux_id, firstname, lastname)
SELECT aux_id, firstname, lastname
FROM table_B
WHERE b.aux_id NOT IN (SELECT a.aux_id FROM table_A a);
应该说我更喜欢NOT EXISTS
:
WHERE NOT EXISTS (SELECT 1 FROM table_A a WHERE a.aux_id = b.aux_id);
原因与 NULL
值的处理有关。 NOT EXISTS
符合您的预期。 NOT IN
如果子查询 returns 一个 NULL
值,则永远 returns 为真。
我有两个 table。 Table A
为主table,table B
为辅table。现在我需要从 table B
复制到 table A
只有 aux_id
不存在于 table A
table_A
id |aux_id | firstname | lastname
table_B
aux_id | firstname | lastname
我正在尝试,但显然没有成功。
INSERT INTO table_A(aux_id,firstname,lastname)(SELECT aux_id,firstname,lastname FROM table_B WHERE aux_id != aux_id);
我得到:INSERT 0 0
这是错误的,因为我确定我在 table B.
中有新条目有很多方法可以做到这一点(left join
、not exists
、not in
)。如果你正在学习 SQL, NOT IN
, 可能是第一次遇到最简单的:
INSERT INTO table_A(aux_id, firstname, lastname)
SELECT aux_id, firstname, lastname
FROM table_B
WHERE b.aux_id NOT IN (SELECT a.aux_id FROM table_A a);
应该说我更喜欢NOT EXISTS
:
WHERE NOT EXISTS (SELECT 1 FROM table_A a WHERE a.aux_id = b.aux_id);
原因与 NULL
值的处理有关。 NOT EXISTS
符合您的预期。 NOT IN
如果子查询 returns 一个 NULL
值,则永远 returns 为真。