Ho una tabella denominata items
come segue:modo migliore per condizione di preferenza sql
id oId key value
1 0 color green
2 0 size 30
3 1 color red
4 2 color blue
Sopra le righe con oId=0
specifica i valori di default di elementi.
Ho bisogno di selezionare tutti key
, value
di un elemento con una particolare oId
che includerà il difetto (OID = 0), se uno specifico key
e value
per tale oId
non esiste.
Ad es. Per la voce 2, deve restituire
id oId key value
1 0 size 30
2 2 color blue
ho scritto la seguente query:
SELECT * FROM items AS i
WHERE i.oId=0 AND
i.key NOT IN (SELECT key FROM items WHERE oId=2)
UNION ALL
SELECT * FROM items WHERE oId=2
C'è un modo per ottimizzare la query di cui sopra?
Vostri criteri è 2 volte più veloce ... grazie. –