对不起,如果已经存在这样的问题,那么到目前为止我还没有找到任何问题。
我有两个表products
和prices
。
在我的products
表中,我有很多产品(成千上万),但是在prices
中,我只设置了少数产品的价格。
连接它们的列称为code
(在两个表中)。
我需要进行INSERT查询,对于在prices
中没有行的每个product
,在prices
中插入一行。
如何实现呢?
答案 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 JOIN
和products
之间的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
选择products
中code
中没有相应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