以下是MySQL表格。我需要将表A的ID列中的值插入表B的ID_A列。已经存在的ID_A中已存在的值应该被忽略。因此,在下面提到的示例中,应忽略表A中的ID 1到3,并且应在表B中插入ID 4到10. ID_X的值是常量,即3。
单个插入SQL查询是什么?
答案 0 :(得分:2)
一个简单的选择是将加入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
答案 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