问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

求SQL分页的语句

发布网友 发布时间:2022-04-25 09:39

我来回答

5个回答

热心网友 时间:2022-04-07 16:52

这是我以前写的分页存储过程..楼主用这个来分页试试
--SELECT * FROM AAA ORDER BY BOMHID DESC
--EXEC up_MovePage 'AAA','*','BOMHID','Y',57,8,8,''
ALTER PROCEDURE up_MovePage
@pTabName NVARCHAR(100)='AAA', -- 所要查询的表名
@pFields NVARCHAR(1000) = '*', -- 需要返回的列,逗号隔开
@pIndexKey NVARCHAR(100)='', -- 查询的唯一Key
@pIsDesc CHAR(1)='Y', -- 排序的顺序.Y:DESC;N:ASC
@pRecCount INT=1, -- 表的记录总数
@pPageIndex INT=1, -- 查询页码,默认设置为1
@pPageNum INT=8, -- 每页设置记录数(这里应该为8)
@pQuery NVARCHAR(1500)= '' -- 查询条件 (提示:不要加 WHERE)
AS
BEGIN
SET NOCOUNT ON
DECLARE @AStrSQL NVARCHAR(2000) -- 最终SQL查询语句
DECLARE @AStrLocate NVARCHAR(250) -- 查询范围
DECLARE @AStrOrder NVARCHAR(250) -- 排序
DECLARE @ARecCount INT -- 表@pTabName的总记录数
DECLARE @AOrderStr NVARCHAR(255)
IF @pIsDesc='Y'
BEGIN
SET @AOrderStr= ' ORDER BY '+@pIndexKey+' DESC'
IF @pPageIndex<=1
BEGIN
IF LEN(@pQuery)=0 OR @pQuery IS NULL -- 查询条件为空,即没有查询条件
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM ' + @pTabName + ' ' + @AOrderStr
ELSE
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM ' + @pTabName + ' WHERE ' + @pQuery + @AOrderStr
END
ELSE
BEGIN
IF LEN(@pQuery)=0 OR @pQuery IS NULL -- 查询条件为空,即没有查询条件
BEGIN
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM '+@pTabName+' WHERE '+ @pIndexKey + ' IN '
+'(SELECT TOP '+STR(@pRecCount-@pPageNum*(@pPageIndex-1))+ ' ' + @pIndexKey +' FROM '+@pTabName+' ORDER BY '+@pIndexKey+' ASC'
+')'
+@AOrderStr
END
ELSE
BEGIN
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM '+@pTabName+' WHERE '+ @pIndexKey + ' IN '
+'(SELECT TOP '+STR(@pRecCount-@pPageNum*(@pPageIndex-1))+ ' ' + @pIndexKey +' FROM '+@pTabName+' WHERE ' + @pQuery + ' ORDER BY '+@pIndexKey+' ASC'
+') WHERE '+ @pQuery
+@AOrderStr
END
END
END
ELSE
BEGIN
SET @AOrderStr= ' ORDER BY '+@pIndexKey+' ASC'
IF @pPageIndex<=1
BEGIN
IF LEN(@pQuery)=0 OR @pQuery IS NULL -- 查询条件为空,即没有查询条件
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM ' + @pTabName + ' ' + @AOrderStr
ELSE
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM ' + @pTabName + ' WHERE ' + @pQuery + @AOrderStr
END
ELSE
BEGIN
IF LEN(@pQuery)=0 OR @pQuery IS NULL -- 查询条件为空,即没有查询条件
BEGIN
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM '+@pTabName+' WHERE '+ @pIndexKey + ' IN '
+'(SELECT TOP '+STR(@pRecCount-@pPageNum*(@pPageIndex-1))+ ' ' + @pIndexKey +' FROM '+@pTabName+' ORDER BY '+@pIndexKey+' DESC'
+')'
+@AOrderStr
END
ELSE
BEGIN
SET @AStrSQL = 'SELECT TOP ' + STR(@pPageNum) + ' ' + @pFields + ' FROM '+@pTabName+' WHERE '+ @pIndexKey + ' IN '
+'(SELECT TOP '+STR(@pRecCount-@pPageNum*(@pPageIndex-1))+ ' ' + @pIndexKey +' FROM '+@pTabName+' WHERE ' + @pQuery + ' ORDER BY '+@pIndexKey+' DESC'
+') WHERE '+ @pQuery
+@AOrderStr
END
END
END
EXEC (@AStrSQL)
SET NOCOUNT OFF
END

热心网友 时间:2022-04-07 18:10

2个参数Start end
start 开始 end 结束
例如第二页从Start11条开始 结束end 21百

select * from (select rownum a,NEWS.* from NEWS where rownum<='"+end+"') b where b.a>'"+start+"'"

方法2 select * from NEWS limit a,b
a就是从第几条开始 b就是查询出的条数
例如 从第10条开始后的10条select * from NEWS limit 10,10
从第6条开始后的8条select * from NEWS limit 6,8

热心网友 时间:2022-04-07 19:44

select top 10 * from news where id not in(select top 10 * from news),一条sql 语句就可实现 其中id 是你表中的主键

热心网友 时间:2022-04-07 21:36

public class Sql {
public List parameter(Pager page){
List list=new ArrayList();

Connection con=null;

int begin = 1;
int end = page.getPageSize();
if(null != page)
{
begin = (page.getCurrentPage()-1)*page.getPageSize() + 1;
end = page.getCurrentPage()*page.getPageSize();
}
//查询SQL
String sq="select rownum R,t.* from NEWS t"

// 查询总数
String sql1 = "SELECT COUNT(*)COU FROM NEWS P WHERE 1= 1 ";

//分页查询
String sql2 = "SELECT O.*,ROWNUM FROM (" + sq + ")O WHERE O.R >= " + begin + " and O.R <=" + end;

try{
con=Conn.getConnection();

Statement stat = con.createStatement();

ResultSet rs = stat.executeQuery(sql1);
while(rs.next())
{
page.setTotalRows(rs.getInt("COU"));
page.setPageCount();
}

rs.close();

stat = con.createStatement();

rs = stat.executeQuery(sql2);
while (rs.next()){
List alist=new ArrayList();
alist.add(rs.getString(2));
list.add(alist);
}
}catch (Exception e) {
e.printStackTrace();
}
finally
{
if(null != con)
{
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return list;

}

你只要SQL的代码!
如果没有Pager 的话! 在加20分 给你!

热心网友 时间:2022-04-07 23:44

下面是一个HQL分页查询:(pagenum:第几页;pagesize:每页几条记录)

public List findAll(int pagenum,int pagesize){
String hql = "from Email";
Query query = getSession().createQuery(sql);
query.setFirstResult((pagenum-1)*pagesize);
query.setMaxResults(pagesize);
return list;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求这图片原图或者主角 出自哪一边电影或者电视剧 哪位大神知道这张图原版在吗?求原版。。。 在word中加下划线时第一次出现一条下划线第二次怎么就出现两条... 诛仙2资料站里的宠物展示能在npc买到吗 求一些诛仙2中的可以变为人形的宠物名字 诛仙2 神域的神农殿里,这是什么东西 诛仙2宠物元神问题 诛仙2 商城 中 宠物元神 怎么比 宠物 还贵啊?宠物元神是干什么的啊... 电热水器怎么安固定花洒 猛鬼夜惊魂剧情介绍 一条sql 语句搞定数据库分页 SQl分页语句 请问下sqlserver2008分页语句怎么写? sql语句分页详解 SQL语句分页查询,一页面多少数据合适 如何用sql语句 实现分页查询? SQL如何实现数据分页,要具体语句,谢谢 如何用sql语句 实现分页查询 用SQL语句怎么实现数据库分页? 跪求Affect3D全部合集,要动画不要CG图 高分求Affect3D的作品图集,G4已有,两个兽人和一个女的也有了,其他的图片或者视屏都可以。 求affect3d比较新的,好看的质量高的动画作品合集 求affect3d g4e-tara&#39;s second assignment注意是second,first有 affect3d 作品,求大神下载地址 affect3d的动漫,有多少都行。最好有游戏安装包。 Affect3D这个游戏已经出了,会有人破解吗 affect3d全部作品动画,注意只要动画 affect3d动画有几部 哪位大侠有affect3D的作品,求下载链接 你好!辛末年铜羊年纪念币上海造币厂生产的有没有收藏价值?? sql语句查询加分页 Sql 分页与排序语句 sql语句分页和排序问题 几种常见SQL分页方式效率比较,一帖子 SQL Server 分页 查询语句 SQl语句查询排名分页 如何使用sql语句进行分页操作? 怎么做可乐鸡腿? 可乐烧鸡腿应该怎么做? 可乐烧鸡腿家常做法大全 新手机号注册微信时要好友辅助注册,好友条件都符合,但是为什么申请不了 带鱼怎么制做 求助:怎样做带鱼 衣柜异味好大,用有什么办法能去除吗? 手机进水屏幕变蓝怎么办? 手机屏幕进水了,但还是好用,就是屏幕颜色变成蓝色了,截图上看不见颜色,咋办哪? 现在手机进水屏幕变成蓝色的了,白天看不见,晚上有点看得清楚这是什么情况? 手机进水了屏幕有一点点蓝色怎么办? 苹果6s手机屏幕进水后感觉显示屏颜色变了 苹果6plus进水啦一切正常就是感觉屏幕颜色有点不正常是怎么回事