【发布时间】:2020-07-19 20:05:23
【问题描述】:
我有两个表:IsCompanyValid 和 CompanyData。
IsCompanyValid:
Company IsValid
A TRUE
B TRUE
C TRUE
D FALSE
CompanyData:
Company Data
A Data1
A Data1
A Data1
B Data1
B Data1
C Data1
D Data1
我想将名为“testData”的数据插入CompanyData,用于每个有效的唯一公司。所以我希望CompanyData 看起来像这样:
CompanyData:
Company Data
A Data1
A Data1
A Data1
B Data1
B Data1
C Data1
D Data1
A testData
B testData
C testData
这是我写的查询:
INSERT into CompanyData (Company, Data)
SELECT
distinct Company,
'testData'
FROM CompanyData
-- Make sure the data we are inserting is for valid companies only
WHERE Company in
(
select Company from IsCompanyValid
where IsValid = true
)
AND 'testData' not in
(
select Data from CompanyData
);
现在这工作正常。但是如果CompanyData 表被稍加修改,使得'testData' 已经存在,这个查询将不再起作用。例如:
CompanyData:
Company Data
A Data1
A Data1
A Data1
B Data1
B Data1
C Data1
D Data1
A testData
此查询将不再插入 B 和 C。我不确定如何修改查询以插入 B 和 C。
真实数据要大得多,所以我需要将我的解决方案泛化。
【问题讨论】:
标签: sql postgresql exists postgresql-10