【发布时间】:2016-05-31 10:23:18
【问题描述】:
以下是 MySQL 表。我需要将表 A 的 ID 列中的值插入表 B 的 ID_A 列。 ID_A 中已经存在的值应该被忽略。因此,在下面提到的示例中,表 A 中的 ID 1 到 3 应该被忽略,ID 4 到 10 应该插入到表 B 中。ID_X 的值是常数,即 3。
什么是单个插入 SQL 查询?
【问题讨论】:
标签: mysql join sql-insert mysql-select-db
以下是 MySQL 表。我需要将表 A 的 ID 列中的值插入表 B 的 ID_A 列。 ID_A 中已经存在的值应该被忽略。因此,在下面提到的示例中,表 A 中的 ID 1 到 3 应该被忽略,ID 4 到 10 应该插入到表 B 中。ID_X 的值是常数,即 3。
什么是单个插入 SQL 查询?
【问题讨论】:
标签: mysql join sql-insert mysql-select-db
一个简单的选择是将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
【讨论】: