作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下表,名为 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 |
其中每个 Class
、Code
配对代表一个特定的 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/
我是一名优秀的程序员,十分优秀!