设有表ta有2个字段,a和b,要取按b排序前五名的数据,但是如果第六名和第七名数值一样,那么这条数据也要,如果第一名的值并列5个,那么所有符合结果的b值只有一个,依次类推。
[code]
a b
1 1
2 1
3 2
4 3
5 3
6 4
7 5
8 5
[/code]
鉴于所有数值都有可能会重复,故写伪代码如下:
[code lang=”sql”]
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]