Mysql
 sql >> Database >  >> RDS >> Mysql

Valutazione di multipli 'IN' Espressioni nelle clausole 'WHERE' in mysql

Questa query restituirà righe, dove b è 5 o 7 , E c è 4 .

Cosa intendi per "valutazione a coppie?"

Aggiornamento:

Aggiungerò un'altra riga all'esempio:

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

Se vuoi abbinare tutti i set, puoi usare questa sintassi:

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

Ciò significa:"restituisci tutte le righe in cui b è 2 e c è 3 allo stesso tempo, OPPURE b è 7 e с è 9 allo stesso tempo."

Nell'esempio sopra, questa query restituirà le righe 1 e 3

Ma se riscrivi questa query al contrario, in questo modo:

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

, questo significherà "restituire tutte le righe in cui b è 2 o 7 , E c è 3 o 9 ).

Questo restituirà le righe 1 , 3 e 5 , dalla riga 5 soddisfa la condizione per la seconda query ma non per la prima.