对我来说,没有真正的方法可以简洁地总结这一点。我有两个数据库表(PostgreSQL 9.x)
第一个包含产品,例如。每个产品都有一个名称和一个唯一的ID。
第二个表包含销售记录,并且具有已售出的每个产品的名称,但不包含ID。我想用Products表中相应唯一条目的'product_id'更新此表。但是,有时,产品名称会显示在Sales表中,而Products表中不存在这些名称。当我找到其中一个时,我想将产品记录添加到Products表中,然后使用新的product_id外键更新该产品名称的销售记录。
我有一些SQL执行第一部分:使用与Products表中的唯一名称对应的product_id更新销售记录。我只需要知道如何首先扫描销售表中的未知产品名称,并在Products表中创建它们。
答案 0 :(得分:1)
这样的事情:
-- add any products not in products table
INSERT INTO Products(ProductName)
SELECT DISTINCT S.ProductName
FROM Sales AS S
WHERE NOT EXISTS(
SELECT *
FROM Products AS P
WHERE P.ProductName = S.ProductName
);
-- now just do update