select * from
(select * from fee_record where gtk_phone_num=? orderby charge_date desc)
where rownum<4
跟
select * from fee_record where gtk_phone_num=? and rownum<4 order by charge_date desc
得到得数据为什么不一样的?
我想要的数据是:
gtk_phone_num的最新三条记录,没有时间限制的。
(select * from fee_record where gtk_phone_num=? orderby charge_date desc)
where rownum<4
跟
select * from fee_record where gtk_phone_num=? and rownum<4 order by charge_date desc
得到得数据为什么不一样的?
我想要的数据是:
gtk_phone_num的最新三条记录,没有时间限制的。
再从排序好的结果集中找前三条记录第二个是 找出前三条记录 然后按照charge_date排序
必须先排序,然后才能取前三条
2 是你先取出3条 在按照这3条orderby
这样取肯定是不一样的
由于oracle不支持top N这样的操作 只能先order by一下,再从外层取rownum
和 sql server里的top是一样的
select * from
(select * from fee_record where gtk_phone_num=? orderby charge_date desc)
where rownum<4
这样的语句不知道还能不能优化,总觉得性能很差的