2

以下是 MySQL 表。我需要将表 A 的 ID 列中的值插入表 B 的 ID_A 列。ID_A 中已经存在的值应该被忽略。因此,在下面提到的示例中,表 A 中的 ID 1 到 3 应该被忽略,ID 4 到 10 应该插入到表 B 中。ID_X 的值是常数,即 3。

什么是单个插入 SQL 查询?

在此处输入图像描述

4

4 回答 4

2

一种直接的选择是左连接AB仅插入那些A尚未出现在B.

INSERT INTO B (ID_A, ID_X)
SELECT A.ID, 3
FROM A LEFT JOIN B
   ON A.ID = B.ID_A
WHERE B.ID_A IS NULL
于 2016-05-31T10:30:54.003 回答
1

您可以创建一个unique indexon column ID_A,然后运行查询:

INSERT IGNORE INTO table_b
    SELECT      ID,
                3
        FROM    table_a;

这应该添加缺少的行。

于 2016-05-31T10:31:10.547 回答
1
INSERT INTO TABLEB
(ID_A,ID_X)
SELECT
     ID,
     3
FROM TABLEA
WHERE ID NOT IN (SELECT ID_A FROM TABLEB)
于 2016-05-31T10:31:20.707 回答
0

试试这个;)

insert into tableb (id_a, id_x)
select a.id as id_a, 3 as id_x from tablea a join tableb b on b.id_a <> a.id
于 2016-05-31T10:31:42.930 回答