Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Kolejność Oracle SQL według problemów z podzapytaniami!

Zarówno dcw, jak i Dems dostarczyły odpowiednie alternatywne zapytania. Chciałem tylko dorzucić wyjaśnienie, dlaczego Twoje zapytanie nie działa tak, jak oczekiwałeś.

Jeśli masz zapytanie zawierające ROWNUM i ORDER BY, Oracle stosuje najpierw ROWNUM, a następnie ORDER BY. Więc zapytanie

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

pobiera dowolne 5 wierszy z EMP tabeli i sortuje je — prawie na pewno nie to, co było zamierzone. Jeśli chcesz uzyskać „pierwsze N” wierszy za pomocą ROWNUM, musisz zagnieździć zapytanie. To zapytanie

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

sortuje wiersze w tabeli EMP i zwraca pierwsze 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. Błąd podczas drukowania zmiennej REFCURSOR jako parametru OUT w procedurze w Oracle 11g

  2. Kodowanie i dekodowanie Base64 w Oracle

  3. Jak zmienić nazwę kolumny tabeli w Oracle 10g?

  4. Zupełnie nowa baza danych produkcyjnych

  5. Wyrażenie regularne (RegEx) dla IPv6 Oddzielone od IPv4