2016-05-31 37 views
2

下面是MySQL表。我需要将表A的ID列的值插入表B的ID_A列。 ID_A中已经存在的值应该被忽略。因此,在下面提到的示例中,表A的ID 1到ID 3应该被忽略,并且ID 4到10应该被插入表B. ID_X的值是常数,即3.插入查询取决于另一个表

什么是单个插入SQL查询?

enter image description here

回答

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 
0

您可以创建在ID_Aunique index,然后运行查询:

INSERT IGNORE INTO table_b 
    SELECT  ID, 
       3 
     FROM table_a; 

这应该添加缺少的行。

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

尽管这段代码可以回答这个问题,提供 附加的上下文有关_why_和/或_how_它回答 问题将显著改善其长期 值。请[编辑]你的答案,添加一些解释。 –

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