SQL高手请进!!limit如何替换成top?

来源:百度知道 编辑:UC知道 时间:2024/05/12 11:01:48
我在MySQL里有一句用于分页的查询语句:String sql="select * from t_news where news_type=1 order by news_id desc limit "+requestRecord+","+pageRecord;
现在要改到SQLServer下运行,SQLServer不支持limit,只能用top,请教高手如何替换?请给出相应代码,谢谢!!
我不懂什么是存储过程,能不能不用存储过程,直接来一段代码?

设requestRecord为页号,pageRecord为每页行数,NEWS_ID无充复值,则:
以下是最好的分页方法(比TOP效率要高,且不易出错):
String sql="
SELECT * FROM t_news t1 WHERE
(SELECT count(1) FROM t_news t2 WHERE t2.news_id < t1.news_id )
>=("+requestRecord+"-1)*"+pageRecord+"+1
AND (SELECT count(1) FROM t_news t2 WHERE t2.news_id < t1.news_id ) < "+requestRecord+"*"+pageRecord+"+1"

这个可以写一个存储过程
create proc fenye
@top int,----一次显示多少条
@page int ----当前第几页
select top(@top*@page) * from t_news where news_type=1 order by news_id desc where news_id not in(select top(@top*(@page-1)) news_id from t_news order by news_id desc)

String sql="select top"& pageRecord&" * from t_news where news_type=1 order by news_id desc"

sql语句改一下就好:
currentPage....页数
number....每页记录数
String sql = "select top(currentPage*number) * from t_news where news_type = 1 order by news_id desc where