J'ai l'oracle SQL suivant et ses travaux et tout, mais c'est assez moche avec tous les or
s. Existe-t-il une manière plus concise de procéder?
SELECT * FROM foobar WHERE
(SUBJECT ='STAT' and TERM ='111') or
(SUBJECT ='STAT' and TERM ='222') or
(SUBJECT ='ENGLISH' and TERM ='555') or
(SUBJECT ='COMM' and TERM ='444') or
(SUBJECT ='COMM' and TERM ='333') or
(SUBJECT ='STAT' and TERM ='666')
...
oracle
query-refactor
Kyle Decot
la source
la source
SELECT * FROM foobar INNER JOIN (SELECT * FROM (VALUES ('4','a'),('5','b')) AS myTable(subject,term)) ON myTable.subject=foobar.table and mytable.term=foobar.term
En termes de nettoyage de code pur, ce qui suit semble plus propre:
Selon l'application et la fréquence de réutilisation de la logique, il peut également être utile de configurer une table de recherche pour appliquer la logique:
la source
Voici une autre façon de procéder. L'utilisation de où (col1, col2) peut empêcher Oracle d'utiliser des index, mais cela ressemble à une table pour la requête, donc cela pourrait mieux fonctionner. Vous saurez une fois que vous aurez testé les différentes versions.
DBFiddle ici
la source