如果列不包含来自另一列的ID,则创建行

时间:2018-06-15 04:14:14

标签: sql

我的数据库包含三个表productproduct_size(变体)和handbookProduct包含有关该产品的所有数据,handbook知道我有哪个尺寸,product_size包含有关手册中尺寸的产品的信息,并且还包含size_value。< / p>

所以我需要在列product_size中插入值,其中size_price将包含product的价格,handbook_id = 666而product_id是不具有产品大小的产品的ID。有没有办法做到这一点?

产品

id
price
name

Product_Size

id
product_id
handbook_id
size_price

手册

id
name

2 个答案:

答案 0 :(得分:0)

所有产品都是产品表中的行。因此,尺寸可能不在手册中,也可能不在product_size表中。

gcc -Wall -Wextra -g

答案 1 :(得分:0)

您可以像这样填写插入内容:

insert into product_size (product_id, handbook_id, size_price)
    select p.product_id, 666, p.price
    from product p
    where not exists (select 1
                      from product_size ps
                      where ps.product_id = p.product_id and ps.handbook_id = 666
                     );

注意:如果您尝试同时运行其中两个插入,则会产生意外结果。为了保护您的数据不受重复影响,您应该在product_size(product_id, handbook_id)上拥有唯一的约束/索引。