首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL选择不在的位置。如何指定多个字段

MySQL选择不在的位置。如何指定多个字段
EN

Stack Overflow用户
提问于 2019-04-01 19:42:31
回答 3查看 212关注 0票数 0

我正在使用下面的查询

代码语言:javascript
复制
SELECT SKU, Country FROM Products WHERE SKU NOT IN (SELECT SKU FROM ProductData)

只要在ProductData表中找不到SKU,这就会从Products表中返回SKU和国家/地区。

我正在努力实现的下一步是相同的结果,但在ProductData中没有找到SKU和国家。

在下面的示例中,法国和德国的ProductData表中缺少MySKU1,但我当前的查询不会返回它们,因为存在MySKU1。所以我需要以某种方式添加第二个字段。

代码语言:javascript
复制
Products TABLE
--------------
MySKU1 UK
MySKU1 France
MySKU1 Germany
MySKU2 UK
MySKU2 France
MySKU2 Germany


ProductData TABLE
--------------
MySKU1 UK
MySKU2 UK
MySKU2 France
MySKU2 Germany

我相信我也可以使用join来做到这一点,但是我不完全理解它的语法,所以如果有任何帮助,我将不胜感激。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-04-01 19:45:31

可以将Country列添加到IN表达式中:

代码语言:javascript
复制
SELECT SKU, Country 
FROM Products 
WHERE (SKU, Country) NOT IN (SELECT SKU, Country FROM ProductData)

输出:

代码语言:javascript
复制
SKU     Country
MySKU1  France
MySKU1  Germany

Demo on dbfiddle

票数 1
EN

Stack Overflow用户

发布于 2019-04-01 19:48:01

您可以使用LEFT join:

代码语言:javascript
复制
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

结果:

代码语言:javascript
复制
| SKU    | Country |
| ------ | ------- |
| MySKU1 | France  |
| MySKU1 | Germany |
票数 1
EN

Stack Overflow用户

发布于 2019-04-01 19:57:38

也许是这样的?

代码语言:javascript
复制
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
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55454287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档