作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望我的 SQL 请求使用 IN () 和 NOT IN () 获取一些行但跳过其他行。但这似乎不能正常工作。有人知道为什么吗?
谢谢!
SELECT *
FROM `prospect`
WHERE id IN (SELECT idprospect
FROM envoi_prospect
WHERE idenvoi IN ( '1', '2', '3', '4',
'6', '7', '10', '12' )
AND id NOT IN (SELECT idprospect
FROM envoi_prospect
WHERE idenvoi IN ( '8', '9', '11', '13' ))
ORDER BY `date` DESC
LIMIT 0, 30
最佳答案
虽然 SQL 语法确实允许这样做,但同时应用 IN 过滤器和 NOT IN 过滤器并没有真正的意义。
考虑一个包含以下记录的表:
ColA
1
2
3
4
如果您编写这样的查询:
SELECT * FROM MyTable
WHERE
ColA IN (1, 2) AND
ColA NOT IN (4)
输出将是:
ColA
1
2
IN 语句过滤您的查询,仅包含 ColA 为 1 或 2 的行。因此,在这种情况下,NOT IN 查询是完全没有必要的。现在,如果您编写这样的查询:
SELECT * FROM MyTable
WHERE
ColA IN (1, 2, 3) AND
ColA NOT IN (3, 4)
输出将与上面相同。为什么?好吧,由于 IN 和 NOT IN 语句之间有一个 AND 运算符,因此两者的计算结果都必须为 TRUE,才能输出记录。现在,对于表中的第 3 行,ColA IN (1, 2, 3)
的计算结果为 TRUE,但 ColA NOT IN (3, 4)
的计算结果为 FALSE,因此第三行没有输出。
关于mysql - 我们可以在 MySQL 中使用 IN () 和 NOT IN () 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541047/
我是一名优秀的程序员,十分优秀!