sql:在一个表中同时插入多个值的行

1mrurvl1  于 2021-07-29  发布在  Java
关注(0)|答案(1)|浏览(354)

请参阅随附的文件以获得更多的说明和示例。
我有一个表格,可以跟踪销售水果的公司每种水果/品种/国家的利润。
[利润表]有4列(水果、国家、f品种、利润)。对于一个特定的国家和品种,有些记录将“无”作为一个品种。
对于每个具有“无”的记录,我希望能够插入每个[品种列表]品种的利润值的重复记录,并对其应用“无”记录,但忽略任何已经具有与特定水果和国家相关的利润的品种。
我可以做一个插入,但一次为一个国家…希望知道我们如何使用varietylist表的查找(知道这不能被编码,因为可能有新品种)
该图像具有输入表和所需输出的示例:

ars1skjm

ars1skjm1#

您可以在表中选择记录 profitTable 那些有 fruitVariety 设置为 'None' ,那么 cross joinvarietyList ,并使用 not exists 逐出表中已存在的组合。

insert into profitTable (fruit, country, fruitVariety, profit)
select pt.fruit, pt.country, vl.variety, pt.profit
from profitTable pt
cross join varietyList vl 
where
    pt.fruitVariety = 'None'
    and not exists (
        select 1 
        from profitTable pt1
        where 
            pt1.fruit = pt.fruit
            and pt1.country = pt.country 
            and pt1.fruitVariety = vl.variety
    )

相关问题