2011-01-05 6 views
2

Je me demande si leur est une meilleure façon de faire quelque chose comme ceci:façon plus efficace d'utiliser SQL OU?

SELECT * 
FROM tableA 
WHERE colour='red' OR colour='greed' OR colour='blue' OR colour='yellow' 

est leur quelque chose comme ceci:

SELECT * 
FROM tableA 
WHERE colour='red''greed''yellow' 

acclamations à l'avance

+2

Juste exactement de quelle couleur est "cupidité"? L'artiste en moi veut savoir. – HLGEM

Répondre

7

Essayez le SQL IN operator

SELECT * FROM tableA WHERE colour in ('red','greed','yellow'); 
+0

Battez-moi. Exemple de manuel d'une situation IN a été conçu pour. – KeithS

2

Le IN Op L'erator devrait être capable de faire ce dont vous avez besoin.

voir http://www.w3schools.com/sql/sql_in.asp

Fondamentalement, vous pourriez dire

SELECT * FROM tableA WHERE colour IN ('red','green','yellow')

3

Notez que l'opérateur IN ne traitera pas un cas NULL la façon dont certaines personnes pourraient attendre:

SELECT * 
FROM tbl 
WHERE color = 'blue' OR color IS NULL 

n'est pas Identique à:

SELECT * 
FROM tbl 
WHERE color IN ('blue', NULL) 

Bien que cela puisse sembler évident de chercher dans le code, il peut être pernicieux lorsque l'IN est un sous-select et NULLs sont dans les résultats internes:

SELECT * 
FROM tbl 
WHERE color IN (SELECT color FROM tbl2) 

Et il présente possibly even more unexpected behavior dans le PAS Dans le cas

Questions connexes