SQL:插入到table_b中,其中table_a没有相关行吗?

时间:2019-04-13 14:37:01

标签: mysql sql insert mariadb row

对不起,如果已经存在这样的问题,那么到目前为止我还没有找到任何问题。

我有两个表productsprices

在我的products表中,我有很多产品(成千上万),但是在prices中,我只设置了少数产品的价格。

连接它们的列称为code(在两个表中)。

我需要进行INSERT查询,对于在prices中没有行的每个product,在prices中插入一行。 如何实现呢?

2 个答案:

答案 0 :(得分:1)

您可以在INSERT INTO ... SELECT子句中使用EXISTS

INSERT INTO prices (code, col1, col2, ...)
SELECT code, col1, col2, ...
FROM products p1
WHERE NOT EXISTS (SELECT 1 FROM prices p2 WHERE p1.code = p2.code);

答案 1 :(得分:1)

LEFT JOINproducts之间的code

select p.code, p.column2, p.column3, ...
from products p left join prices pp
on pp.code = p.code
where pp.code is null

选择productscode中没有相应prices的所有行。
因此,您可以在此语句中使用它:

insert into prices (code, column2, column3, ...)
select p.code, p.column2, p.column3, ...
from products p left join prices pp
on pp.code = p.code
where pp.code is null