Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle SQL подреждане по проблеми с подзаявката!

И dcw, и Dems предоставиха подходящи алтернативни заявки. Просто исках да добавя обяснение защо заявката ви не се държи по начина, по който очаквахте.

Ако имате заявка, която включва ROWNUM и ORDER BY, Oracle прилага първо ROWNUM и след това ORDER BY. Така че заявката

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

получава произволни 5 реда от EMP таблица и ги сортира - почти сигурно не това, което е било предназначено. Ако искате да получите "първите N" реда, използвайки ROWNUM, ще трябва да вложите заявката. Тази заявка

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

сортира редовете в таблицата EMP и връща първите 5.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. премахване на милисекунди от поле на оракул tmstmp

  2. SQL (ORACLE):ORDER BY и LIMIT

  3. Екраниране на контролни знаци в Oracle XDB

  4. Как да изпълним процедура вътре в пакет в Oracle

  5. Съвпадение на стойностите на дублирани колони на Oracle с помощта на Soundex, Jaro Winkler и Edit Distance (UTL_MATCH)