将唯一数据从一个 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 joinnot existsnot 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 为真。