gpt4 book ai didi

sql - 如何编写一个 Sql 查询来查找从未满足以下 "Where Not(a=x and b=x)"的不同值

转载 作者:行者123 更新时间:2023-12-02 06:04:13 29 4
gpt4 key购买 nike

我有下表,名为 Attributes

* AttId  * CustomerId  * Class * Code *
| 1 | 1 | 1 | AA |
| 2 | 1 | 1 | AB |
| 3 | 1 | 1 | AC |
| 4 | 1 | 2 | AA |
| 5 | 1 | 2 | AB |
| 6 | 1 | 3 | AB |
| 7 | 2 | 1 | AA |
| 8 | 2 | 1 | AC |
| 9 | 2 | 2 | AA |
| 10 | 3 | 1 | AB |
| 11 | 3 | 3 | AB |
| 12 | 4 | 1 | AA |
| 13 | 4 | 2 | AA |
| 14 | 4 | 2 | AB |
| 15 | 4 | 3 | AB |

其中每个 ClassCode 配对代表一个特定的 Attribute

我正在尝试编写一个查询,返回所有 customers NOT 链接到 Attribute 配对 Class = 1 , 代码 = AB

这将返回 Customer Id 值 2 和 4。

我开始编写 Select Distinct A.CustomerId From Attributes A Where (A.Class = 1 and A.Code = 'AB') 但是当我意识到我正在编写一个 时停止了SQL 查询,并且在括号前没有可用的运算符来指示必须满足的子句。

我错过了什么?或者我应该看哪个运营商?

编辑:

我正在尝试编写一个查询,该查询仅返回那些 Customers(即不同的客户 ID)NO 链接到 Attribute配对 Class = 1, Code = AB

这只能是 Customer Id 值 2 和 4,因为该表包含以下行:

* AttId  * CustomerId  * Class * Code *
| x | 2 | 1 | AB |
| x | 4 | 1 | AB |

标题更改自:

如何在 Sql 查询中写“Where Not(a=x and b=x)”

收件人:

如何编写 Sql 查询以查找从未满足以下“Where Not(a=x and b=x)”的不同值

由于之前的标题本身就是一个问题,但问题的细节增加了一个额外的维度,导致混淆。

最佳答案

一种方式是

SELECT DISTINCT CustomerId FROM Attributes a 
WHERE NOT EXISTS (
SELECT * FROM Attributes forbidden
WHERE forbidden.CustomerId = a.CustomerId AND forbidden.Class = _forbiddenClassValue_ AND forbidden.Code = _forbiddenCodeValue_
)

或加入

SELECT DISTINCT a.CustomerId FROM Attributes a
LEFT JOIN (
SELECT CustomerId FROM Attributes
WHERE Class = _forbiddenClassValue_ AND Code = _forbiddenCodeValue_
) havingForbiddenPair ON a.CustomerId = havingForbiddenPair.CustomerId
WHERE havingForbiddenPair.CustomerId IS NULL

另一种方法是根据 ypercube 的回答使用 EXCEPT

关于sql - 如何编写一个 Sql 查询来查找从未满足以下 "Where Not(a=x and b=x)"的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14124763/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com