我现在使用以下查询
SELECT SKU, Country FROM Products WHERE SKU NOT IN (SELECT SKU FROM ProductData)
只要在ProductData表中找不到SKU,这就会从Products表中返回SKU和Country。
我正在努力实现的目标是相同的结果,但是在ProductData的行中找不到SKU和Country。
在以下示例中,法国和德国的ProductData表中缺少MySKU1,但由于MySKU1存在,我当前的查询不会返回它们。所以我需要以某种方式添加第二个字段。
Products TABLE
--------------
MySKU1 UK
MySKU1 France
MySKU1 Germany
MySKU2 UK
MySKU2 France
MySKU2 Germany
ProductData TABLE
--------------
MySKU1 UK
MySKU2 UK
MySKU2 France
MySKU2 Germany
我相信我也可以通过加入来做到这一点,但我不完全理解语法,所以任何帮助都会受到赞赏。
您可以将Country
列添加到IN
表达式:
SELECT SKU, Country
FROM Products
WHERE (SKU, Country) NOT IN (SELECT SKU, Country FROM ProductData)
输出:
SKU Country
MySKU1 France
MySKU1 Germany
您可以使用LEFT联接来执行此操作:
SELECT p.SKU, p.Country
FROM Products p LEFT JOIN ProductData d
on d.SKU = p.SKU and d.Country = p.Country
WHERE d.SKU is null or d.Country is null
结果:
| SKU | Country |
| ------ | ------- |
| MySKU1 | France |
| MySKU1 | Germany |
也许是这样的?
SELECT p.SKU, p.Country
FROM Products p
Left outer join ProductData pd on pd.SKU = p.SKU and pd.COUNTRY = p.COUNTRY
WHERE pd.SKU is null