设有表ta有2个字段,a和b,要取按b排序前五名的数据,但是如果第六名和第七名数值一样,那么这条数据也要,如果第一名的值并列5个,那么所有符合结果的b值只有一个,依次类推。
a b 1 1 2 1 3 2 4 3 5 3 6 4 7 5 8 5
鉴于所有数值都有可能会重复,故写伪代码如下:
select * from ta where b < = (select max (b) mb from (select b from (select b from ta order by b) tb rownum < 6) tc) [/code] 1,按b排序取b 2,取6行 3,取最大值mb 4,把小于等于mb的数据都拿出来, 5,done[/code][code] 不知对否,空下来再测试:D[/code]