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

Come posso combinare AND e OR nella mia istruzione SQL

Entrambi sarebbero validi, ma poiché AND ha una precedenza maggiore di OR , significherebbero cose diverse:

  • La tua prima query tra parentesi selezionerebbe le righe eliminate con i tipi 3, 4, 5
  • La tua seconda query tra parentesi selezionerebbe tutte le righe con i tipi 3, 5, oltre alle righe eliminate di tipo 4; questo è lo stesso significato della query originale senza parentesi.

Puoi evitare del tutto la confusione usando l'operatore IN , in questo modo:

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

o se volevi il secondo significato

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