温馨提示×

oracle rownum排序时有重复值怎么解决

小亿
131
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