Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Avaliação de múltiplas expressões 'IN' em cláusulas 'WHERE' no mysql


Esta consulta retornará linhas, onde b é 5 ou 7 , E c é 4 .

O que você quer dizer com "avaliação em pares?"

Atualização:

Vou adicionar mais uma linha à amostra:
 +----------+----------+----------+
 |    PK    |     b    |     c    |
 +----------+----------+----------+
 |     1    |     2    |     3    |
 +----------+----------+----------+
 |     2    |     5    |     4    |
 +----------+----------+----------+
 |     3    |     7    |     9    |
 +----------+----------+----------+
 |     4    |     7    |     4    |
 +----------+----------+----------+
 |     5    |     2    |     9    |
 +----------+----------+----------+

Se você quiser combinar os conjuntos inteiros, você pode usar esta sintaxe:
SELECT  *
FROM    table_name
WHERE   (b, c) IN ((2, 3), (7, 9))

Isso significa:"retorne todas as linhas onde b é 2 e c é 3 ao mesmo tempo, OU b é 7 e с é 9 ao mesmo tempo."

No exemplo acima, esta consulta retornará as linhas 1 e 3

Mas se você reescrever essa consulta ao contrário, assim:
SELECT  *
FROM    table_name
WHERE   b IN (2, 7)
        AND c IN (3, 9)

, isso significará "retornar todas as linhas onde b é 2 ou 7 , E c é 3 ou 9 ).

Isso retornará as linhas 1 , 3 e 5 , desde a linha 5 satisfaz a condição para a segunda consulta, mas não para a primeira.