sql >> Database >  >> RDS >> Mysql

Hoe een of meer OR en AND te gebruiken in mysql-query

Er is voorrang met logische operatoren. Gebruik bij twijfel haakjes.

In jouw geval:

SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200

Uw oorspronkelijke zoekopdracht werd als volgt geïnterpreteerd omdat de AND heeft een hogere prioriteit.

SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)

Bijwerken

Zoals commentaar van Rocket , zou je je OR . kunnen inkorten verklaringen aan IN omdat ze op hetzelfde terrein opereren. Dit zou de noodzaak voor haakjes wegnemen.

SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200

Desalniettemin is het belangrijk om het verschil tussen de twee oorspronkelijke zoekopdrachten te begrijpen, omdat u onvermijdelijk zoekopdrachten met meerdere voorwaarden zult schrijven.



  1. Waarom wordt selecteren uit opgeslagen procedure niet ondersteund in relationele databases?

  2. Selecteer uit het n-de record enzovoort in MySQL

  3. Oracle - Selecteer bij een één-op-veel-relatie afzonderlijke rijen op basis van een minimale waarde

  4. Gebruik MySQL relationele databases op Ubuntu 8.04 (Hardy)