插入查询取决于另一个表

时间:2016-05-31 10:23:18

标签: mysql join sql-insert mysql-select-db

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

单个插入SQL查询是什么?

enter image description here

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

您可以在unique index列上创建ID_A,然后运行查询:

INSERT IGNORE INTO table_b
    SELECT      ID,
                3
        FROM    table_a;

这应该添加缺少的行。

答案 2 :(得分:1)

INSERT INTO TABLEB
(ID_A,ID_X)
SELECT
     ID,
     3
FROM TABLEA
WHERE ID NOT IN (SELECT ID_A FROM TABLEB)

答案 3 :(得分: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