首页 > 解决方案 > MySQL 选择不在的地方。如何指定多个字段

问题描述

我现在正在使用以下查询

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

我相信我也可以通过加入来做到这一点,但我并不完全理解语法,所以任何帮助都将不胜感激。

标签: mysqljoin

解决方案


您可以使用 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 |

推荐阅读