sql >> Databasteknik >  >> RDS >> Mysql

Utvärdering av multiplar 'IN'-uttryck i 'WHERE'-satser i mysql

Denna fråga returnerar rader, där b är antingen 5 eller 7 , OCH c är 4 .

Vad menar du med "utvärdering i par?"

Uppdatering:

Jag lägger till en rad till i exemplet:

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

Om du vill matcha hela uppsättningarna kan du använda denna syntax:

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

Detta betyder:"returnera alla rader där b är 2 och c är 3 samtidigt, ELLER b är 7 och с är 9 samtidigt."

I exemplet ovan kommer denna fråga att returnera rader 1 och 3

Men om du skriver om den här frågan åt andra hållet, så här:

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

, kommer detta att betyda "returnera alla rader där b är antingen 2 eller 7 , OCH c är antingen 3 eller 9 ).

Detta kommer att returnera rader 1 , 3 och 5 , eftersom rad 5 uppfyller villkoret för den andra frågan men inte för den första.



  1. Bygg om index på InnoDB

  2. identitet från sql infoga via jdbctemplate

  3. BLOB i MySQL-vy istället för rätt data

  4. Hur man får en fråga att överföra till efterföljande sidor när man paginerar resultat