sql >> Databasteknik >  >> RDS >> Mysql

Hur kan jag kombinera AND och OR i min SQL-sats

Båda dessa skulle vara giltiga, men sedan AND har högre prioritet än OR , de skulle betyda olika saker:

  • Din första fråga inom parentes skulle välja borttagna rader med typerna 3, 4, 5
  • Din andra fråga inom parentes skulle välja alla rader med typ 3, 5, förutom raderade rader av typ 4; detta är samma betydelse som i den ursprungliga frågan utan parentes.

Du kan undvika förvirringen helt och hållet genom att använda operatorn IN , så här:

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

eller om du ville ha den andra betydelsen

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


  1. Tillåt null i unik kolumn

  2. PostgreSQL är världens bästa databas

  3. Flask_SQLAlchemy, MySQL, lagra svenska tecken å, ä, ö?

  4. WampServer - mysqld.exe kan inte starta eftersom MSVCR120.dll saknas