Sélectionnez les 10 meilleurs enregistrements dans Oracle à l'aide de la sous-requête et du filtrage
Dans la base de données Oracle, vous pouvez utiliser des techniques de sous-requête et de filtrage pour sélectionner les 10 premiers enregistrements triés par une colonne spécifique. La requête initialement utilisée pour sélectionner tous les enregistrements correspondants peut être modifiée pour inclure cette exigence.
Pour résoudre le problème du retour d'enregistrements "aléatoires", vous pouvez utiliser la clause ROWNUM (qui est l'équivalent Oracle de la clause LIMIT).
Requête modifiée :
<code class="language-sql">SELECT * FROM ( SELECT DISTINCT APP_ID, NAME, STORAGE_GB, HISTORY_CREATED, TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') AS HISTORY_DATE FROM HISTORY WHERE STORAGE_GB IS NOT NULL AND APP_ID NOT IN ( SELECT APP_ID FROM HISTORY WHERE TO_CHAR(HISTORY_DATE, 'DD.MM.YYYY') = '06.02.2009' ) ORDER BY STORAGE_GB DESC ) WHERE ROWNUM <= 10;</code>
Cette requête utilise d'abord une sous-requête pour récupérer les enregistrements correspondants. Il applique ensuite la clause ROWNUM pour sélectionner les 10 premiers enregistrements de l'ensemble de données résultant en fonction des critères de tri.
Notes de performances :
Si les performances des requêtes sont lentes lors du traitement de grands ensembles de données, envisagez d'utiliser NOT EXISTS au lieu de NOT IN pour le prédicat de sous-requête. NOT EXISTS peut être plus efficace lorsque la sous-requête contient un grand nombre d'enregistrements.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!