1

私は MySQL を使用しており、次のような場合に SLQ クエリを実行したときに正確に何が起こるか (または何が起こる可能性があるか) を知りたいです。

ケース1

SELECT ... 
WHERE 'articles'.'author_id' = 2 
  AND (articles.id IN (46,4,5)) 
  AND (articles.id IN (4,5,16,40))

ケース 2

SELECT ... 
WHERE 'articles'.'author_id' = 2 
  AND (articles.id NOT IN (46,4,5)) 
  AND (articles.id IN (4,5,16,40))

?

特に、句内のdoublesarticles.idステートメントで何が起こるのでしょうか?WHERE

4

2 に答える 2

4

単なる論理積です

1 && 1 = 1
0 && 1 = 0
1 && 0 = 0
0 && 0 = 0

1. ケースに適用:

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. ケースに適用:

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
于 2012-06-09T00:47:56.520 に答える
0

どちらの場合も、IN セットと NOT IN セットの両方に現れる特定の ID は含まれません。

ID 4 の行を調べる場合 (たとえば)、ブール条件を満たさなければなりません。

4 つの入力 (46,4,5) および 4 つの非入力 (46,4,5)

これは false であるため、ID 4 の行は返されません。

ID が IN 句と NOT IN 句の両方に現れる他の行についても同じことが当てはまります。これは、特定の ID が同じ ID セットに存在することも存在しないこともできないためです。

于 2012-06-09T00:46:36.060 に答える