首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >“`WHERE`”子句中的双`articles.id`语句会发生什么?

“`WHERE`”子句中的双`articles.id`语句会发生什么?
EN

Stack Overflow用户
提问于 2012-06-09 00:44:26
回答 2查看 53关注 0票数 1

我使用的是MySQL,我想知道在以下情况下,当我以类似的方式运行SLQ查询时,到底会发生什么(或可能发生什么)

案例1

代码语言:javascript
复制
SELECT ... 
WHERE 'articles'.'author_id' = 2 
  AND (articles.id IN (46,4,5)) 
  AND (articles.id IN (4,5,16,40))

案例2

代码语言:javascript
复制
SELECT ... 
WHERE 'articles'.'author_id' = 2 
  AND (articles.id NOT IN (46,4,5)) 
  AND (articles.id IN (4,5,16,40))

特别是,我的意思是,在articles.id子句中双倍的WHERE语句会发生什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-09 00:47:56

只是一个合乎逻辑的

代码语言:javascript
复制
1 && 1 = 1
0 && 1 = 0
1 && 0 = 0
0 && 0 = 0

适用于1.情况:

代码语言:javascript
复制
Value        IN (46,4,5)  AND  IN (4,5,16,40)    Result
4                 1                  1             1
5                 1                  1             1
46                1                  0             0
16                0                  1             0
40                0                  1             0

适用于2.案件:

代码语言:javascript
复制
Value     NOT IN (46,4,5)  AND  IN (4,5,16,40)   Result
4                 0                  1             0
5                 0                  1             0
46                0                  0             0
16                1                  1             1
40                1                  1             1
票数 4
EN

Stack Overflow用户

发布于 2012-06-09 00:46:36

在这两种情况下,任何出现在In集和NOT in集中的给定ID都将不包括在内。

当使用ID 4检查行时(例如),它必须满足布尔条件

4 IN (46,4,5)和4非IN (46,4,5)

这是false,因此不返回ID 4的行。

对于ID出现在in子句和NOT IN子句中的任何其他行,同样的情况也是如此,因为给定的ID不能同时出现在同一组ID中,也不能出现在同一组ID中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10957513

复制
相关文章

相似问题

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