sql >> Databáze >  >> RDS >> Oracle

Oracle SQL objednávka v poddotazu problémy!

Jak dcw, tak Dems poskytly vhodné alternativní dotazy. Jen jsem chtěl přihodit vysvětlení, proč se váš dotaz nechová tak, jak jste očekávali.

Pokud máte dotaz, který obsahuje ROWNUM a ORDER BY, Oracle použije nejprve ROWNUM a poté ORDER BY. Takže dotaz

SELECT *
  FROM emp
 WHERE rownum <= 5
 ORDER BY empno

získá libovolných 5 řádků z EMP stůl a třídí je-- téměř jistě ne to, co bylo zamýšleno. Pokud chcete získat „prvních N“ řádků pomocí ROWNUM, budete muset dotaz vnořit. Tento dotaz

SELECT *
  FROM (SELECT *
          FROM emp
         ORDER BY empno)
 WHERE rownum <= 5

seřadí řádky v tabulce EMP a vrátí prvních 5.



  1. Nejlepší nástroj pro obnovu SQL pro rok 2020 k obnovení klíčové databáze SQL

  2. Připojte se k nám v Amsterdamu na setkání s OptimaData &VidaXL

  3. Porovnání řetězců s rozlišením velkých a malých písmen

  4. Rychlý tip – Zrychlete pomalé obnovení z protokolu transakcí