sql >> Base de Datos >  >> RDS >> Mysql

Evaluación de múltiples expresiones 'IN' en cláusulas 'WHERE' en mysql

Esta consulta devolverá filas, donde b es 5 o 7 , Y c es 4 .

¿Qué quieres decir con "evaluación en parejas"?

Actualización:

Agregaré una fila más a la muestra:

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

Si desea hacer coincidir los conjuntos completos, puede usar esta sintaxis:

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

Esto significa:"devolver todas las filas donde b es 2 y c es 3 al mismo tiempo, O b es 7 y с es 9 al mismo tiempo."

En el ejemplo anterior, esta consulta devolverá filas 1 y 3

Pero si reescribe esta consulta al revés, así:

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

, esto significará "devolver todas las filas donde b es 2 o 7 , Y c es 3 o 9 ).

Esto devolverá las filas 1 , 3 y 5 , desde la fila 5 cumple la condición para la segunda consulta pero no para la primera.