一个表中有100条数据,我想每次查10条直到查完,请问有什么好的方法么

xzxmustwin 2018-03-27 11:28:20
一个表中有100条数据,我想每次查10条直到查完,请问有什么好的方法么
(不是分页)
...全文
1099 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaoxiangqing 2018-03-28
  • 打赏
  • 举报
回复
先编号,通过编号来查
xzxmustwin 2018-03-28
  • 打赏
  • 举报
回复
引用 2 楼 yenange 的回复:
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(id INT IDENTITY(1,1) PRIMARY KEY,n NVARCHAR(10))
GO
INSERT INTO t(n)
SELECT left(NEWID(),10) 
FROM [master].dbo.spt_values AS sv WHERE sv.[type]='P' AND sv.number BETWEEN 1 AND 100;

DECLARE @t TABLE (rowNum INT IDENTITY(1,1) PRIMARY KEY,id INT)

INSERT INTO @t(id)
SELECT id
FROM t

DECLARE @i INT,@imax INT
SELECT @i=1,@imax=MAX(rowNum) FROM @t

WHILE @i<=@imax
BEGIN
	SELECT t.id,t.n 
	FROM t INNER JOIN @t AS b ON t.id=b.id AND b.rowNum BETWEEN @i AND @i+9 
	
	SET @i=@i+10
END
大概思路了解了 结贴!
eaqpi 2018-03-27
  • 打赏
  • 举报
回复
WITH sss AS( SELECT *,ROW_NUMBER() OVER(ORDER BY 字段) AS rowNum FROM [table] ) SELECT * FROM sss WHERE rowNum BETWEEN 31 AND 40
吉普赛的歌 版主 2018-03-27
  • 打赏
  • 举报
回复
USE tempdb
GO
IF OBJECT_ID('t') IS NOT NULL DROP TABLE t
GO
CREATE TABLE t(id INT IDENTITY(1,1) PRIMARY KEY,n NVARCHAR(10))
GO
INSERT INTO t(n)
SELECT left(NEWID(),10) 
FROM [master].dbo.spt_values AS sv WHERE sv.[type]='P' AND sv.number BETWEEN 1 AND 100;

DECLARE @t TABLE (rowNum INT IDENTITY(1,1) PRIMARY KEY,id INT)

INSERT INTO @t(id)
SELECT id
FROM t

DECLARE @i INT,@imax INT
SELECT @i=1,@imax=MAX(rowNum) FROM @t

WHILE @i<=@imax
BEGIN
	SELECT t.id,t.n 
	FROM t INNER JOIN @t AS b ON t.id=b.id AND b.rowNum BETWEEN @i AND @i+9 
	
	SET @i=@i+10
END
牛尚小又何妨 2018-03-27
  • 打赏
  • 举报
回复
首先给表排序,记录当次查询的最大值(0开始)在临时表或者实体表,每次查询10条,跟新最大是+10
xzxmustwin 2018-03-27
  • 打赏
  • 举报
回复
引用 1 楼 eaqpi 的回复:
WITH sss AS( SELECT *,ROW_NUMBER() OVER(ORDER BY 字段) AS rowNum FROM [table] ) SELECT * FROM sss WHERE rowNum BETWEEN 31 AND 40
额 不是分页啦 不过还是谢谢你

34,594

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧