溫馨提示×

oracle rownum排序時有重復值怎么解決

小億
222
2024-01-13 13:52:26
欄目: 云計算

當使用ROWNUM對結果集進行排序時,可能會出現重復的值。這是因為ROWNUM是在查詢結果返回后才進行計算的,所以在排序之前無法確定每個行的ROWNUM值。為了解決這個問題,可以使用子查詢。
例如,假設有一個表名為"employees",有一個列名為"salary",你想對工資進行排序并獲取前10名員工:

SELECT * FROM (

  SELECT * FROM employees ORDER BY salary DESC

) WHERE ROWNUM <= 10;

這個查詢先對工資進行降序排序,然后將結果作為子查詢,再使用ROWNUM進行篩選。這樣可以確保排序后的結果正確,并且可以獲取到前10名員工的數據。
需要注意的是,如果希望獲取不重復的結果,可以使用DISTINCT關鍵字。例如:

SELECT DISTINCT salary FROM (

  SELECT * FROM employees ORDER BY salary DESC

) WHERE ROWNUM <= 10;

這樣可以確保結果中只有不重復的工資值。

0