13
07年3月
oracle中实现sql server的select top n with ties中的ties
贝贝爸 发表在 原创技术文章 |设有表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)
1,按b排序取b
2,取6行
3,取最大值mb
4,把小于等于mb的数据都拿出来,
5,done 不知对否,空下来再测试:D



