2011-01-05 11 views
2

ich frage mich, ob sie ein besserer Weg, etwas zu tun, ist wie folgt:effizientere Art der Verwendung von SQL OR?

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

sie etwas Derartiges sind:

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

Jubel im Voraus

+2

Genau welche Farbe ist "Gier"? Der Künstler in mir will es wissen. – HLGEM

Antwort

7

die Versuchen SQL IN operator

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

Beat mich dazu. Lehrbuchbeispiel für eine Situation, für die IN konzipiert wurde. – KeithS

3

Beachten Sie, dass der IN-Operator könnte erwarten, behandelt nicht einige Leute eine NULL Fall die Art und Weise sagen könnte:

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

ist nicht das gleiche wie:

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

Während dies offensichtlich scheint in Code zu suchen, kann es schädlich sein, wenn die in einem Unter wählen ist, und NULL-Werte sind in den inneren Ergebnissen:

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

Und es zeigt possibly even more unexpected behavior im NICHT Im Fall

Verwandte Themen