Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Auswertung mehrerer 'IN'-Ausdrücke in 'WHERE'-Klauseln in mysql

Diese Abfrage gibt Zeilen zurück, wobei b ist entweder 5 oder 7 , UND c ist 4 .

Was meinen Sie mit „Evaluierung zu zweit“?

Aktualisierung:

Ich füge dem Beispiel eine weitere Zeile hinzu:

 +----------+----------+----------+
 |    PK    |     b    |     c    |
 +----------+----------+----------+
 |     1    |     2    |     3    |
 +----------+----------+----------+
 |     2    |     5    |     4    |
 +----------+----------+----------+
 |     3    |     7    |     9    |
 +----------+----------+----------+
 |     4    |     7    |     4    |
 +----------+----------+----------+
 |     5    |     2    |     9    |
 +----------+----------+----------+

Wenn Sie die ganzen Sätze abgleichen möchten, können Sie diese Syntax verwenden:

SELECT  *
FROM    table_name
WHERE   (b, c) IN ((2, 3), (7, 9))

Das bedeutet:„Gib alle Zeilen zurück, in denen b ist 2 und c ist 3 gleichzeitig ODER b ist 7 und с ist 9 gleichzeitig."

Im obigen Beispiel gibt diese Abfrage die Zeilen 1 zurück und 3

Aber wenn Sie diese Abfrage andersherum umschreiben, etwa so:

SELECT  *
FROM    table_name
WHERE   b IN (2, 7)
        AND c IN (3, 9)

, bedeutet dies "alle Zeilen zurückgeben, in denen b ist entweder 2 oder 7 , UND c ist entweder 3 oder 9 ).

Dadurch werden die Zeilen 1 zurückgegeben , 3 und 5 , seit Zeile 5 erfüllt die Bedingung für die zweite Abfrage, aber nicht für die erste.