下面是MySQL表。我需要将表A的ID列的值插入表B的ID_A列。 ID_A中已经存在的值应该被忽略。因此,在下面提到的示例中,表A的ID 1到ID 3应该被忽略,并且ID 4到10应该被插入表B. ID_X的值是常数,即3.插入查询取决于另一个表
什么是单个插入SQL查询?
下面是MySQL表。我需要将表A的ID列的值插入表B的ID_A列。 ID_A中已经存在的值应该被忽略。因此,在下面提到的示例中,表A的ID 1到ID 3应该被忽略,并且ID 4到10应该被插入表B. ID_X的值是常数,即3.插入查询取决于另一个表
什么是单个插入SQL查询?
一个简单的选择是左连接A
与B
并插入只能从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
您可以创建在ID_A
列unique index
,然后运行查询:
INSERT IGNORE INTO table_b
SELECT ID,
3
FROM table_a;
这应该添加缺少的行。
INSERT INTO TABLEB
(ID_A,ID_X)
SELECT
ID,
3
FROM TABLEA
WHERE ID NOT IN (SELECT ID_A FROM TABLEB)
试试这个;)
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
尽管这段代码可以回答这个问题,提供 附加的上下文有关_why_和/或_how_它回答 问题将显著改善其长期 值。请[编辑]你的答案,添加一些解释。 –