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

Hvordan kan jeg kombinere AND'er og OR'er i min SQL-sætning

Begge disse ville være gyldige, men siden AND har højere forrang end OR , ville de betyde forskellige ting:

  • Din første forespørgsel i parentes vil vælge slettede rækker med type 3, 4, 5
  • Din anden forespørgsel i parentes vil vælge alle rækker med type 3, 5, foruden slettede rækker af type 4; dette er den samme betydning som i den oprindelige forespørgsel uden parentes.

Du kan undgå forvirringen helt ved at bruge operatoren IN , sådan her:

SELECT * FROM `table` WHERE type IN (3, 4, 5) AND table.deleted = 1;

eller hvis du ville have den anden betydning

SELECT * FROM `table` WHERE type IN (3, 5) OR (type = 4 AND table.deleted = 1)


  1. Arbejde med Java Data i Sisense

  2. Sådan opdeles kommasepareret tekst i MySQL-lagret procedure

  3. Ulovlig blanding af sammenstillinger (utf8mb4_unicode_ci,IMPLICIT) og (utf8mb4_general_ci,IMPLICIT) for operation '='

  4. mysql:få rekordantal mellem to dato-klokkeslæt