数据库分页问题

kevin#1 2014-04-03 09:35:30

我我数据库里面有这么一段脚本,我想在这段脚本中添加一个分页的操作,做好 能够将多个if 都包含在内,
实际境况中,肯定有一个if满足脚本的需要,请大神指点。

if(1=1)
begin
select * from ts_user
end
if(1=1)
begin
select * from ts_user
end
...全文
251 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
那可以通过动态语句来实现。

DECLARE @Sql NVARCHAR(max),@Where NVARCHAR(max)
if 1=1
set @where=' ...'
if 1=2
set @where=' ....'
if xxxx
set @where='.....'

set @sql='select * from ts_user'+@where

IF OBJECT_ID('Tempdb..#ts_user'') IS NOT NULL
	DROP TABLE #ts_user'
CREATE TABLE #ts_user'
(
.....--这里新建的临时表与你的ts_user'的结构一致
)

insert #ts_user  exec(@sql)


;WITH CTE AS 
(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()) AS ROW,* FROM  #ts_user'  
)
 
SELECT * FROM CTE WHERE ROW BETWEEN XX AND XX

kevin#1 2014-04-03
  • 打赏
  • 举报
回复
引用 9 楼 fredrickhu 的回复:
[quote=引用 8 楼 liubo_0329 的回复:] [quote=引用 7 楼 fredrickhu 的回复:]
那你就在每个IF里面用ROW_NUMBER()OVER加行号分页啊 都一样的
;WITH CTE AS 
(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()) AS ROW,* FROM TB 
)

SELECT * FROM CTE WHERE ROW BETWEEN XX AND XX
难道这种不能在 多个if 外面进行分页啊? 像这种脚本,每个都要去改的话,那工作量相当的大,也就是我跪求的方式所在。[/quote] 你IF条件判断以后 逻辑都变化了 怎么在外面统一分页?[/quote] 其实每个if 里面就是一个查询语句,同一张表,只是筛选的条件不同。
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
引用 8 楼 liubo_0329 的回复:
[quote=引用 7 楼 fredrickhu 的回复:]
那你就在每个IF里面用ROW_NUMBER()OVER加行号分页啊 都一样的
;WITH CTE AS 
(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()) AS ROW,* FROM TB 
)

SELECT * FROM CTE WHERE ROW BETWEEN XX AND XX
难道这种不能在 多个if 外面进行分页啊? 像这种脚本,每个都要去改的话,那工作量相当的大,也就是我跪求的方式所在。[/quote] 你IF条件判断以后 逻辑都变化了 怎么在外面统一分页?
kevin#1 2014-04-03
  • 打赏
  • 举报
回复
引用 7 楼 fredrickhu 的回复:
那你就在每个IF里面用ROW_NUMBER()OVER加行号分页啊 都一样的
;WITH CTE AS 
(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()) AS ROW,* FROM TB 
)

SELECT * FROM CTE WHERE ROW BETWEEN XX AND XX
难道这种不能在 多个if 外面进行分页啊? 像这种脚本,每个都要去改的话,那工作量相当的大,也就是我跪求的方式所在。
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
那你就在每个IF里面用ROW_NUMBER()OVER加行号分页啊 都一样的
;WITH CTE AS 
(
SELECT ROW_NUMBER()OVER(ORDER BY GETDATE()) AS ROW,* FROM TB 
)

SELECT * FROM CTE WHERE ROW BETWEEN XX AND XX
kevin#1 2014-04-03
  • 打赏
  • 举报
回复
引用 5 楼 fredrickhu 的回复:
你可以再分页的同时在后面加上WHERE 1=1 或者WHERE 1=2的条件就可以了。 至于分页的很多。2005以上可以用ROW_NUMBER()OVER加个行号就OK了。
在每个 if 里面 可以进行分页,但是我想通过
select * from (
if(1=1)
begin  
select * from ts_user
end
if(1=2)
begin
    select * from ts_user
end
) a
这样 我的调整就最小。
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
你可以再分页的同时在后面加上WHERE 1=1 或者WHERE 1=2的条件就可以了。 至于分页的很多。2005以上可以用ROW_NUMBER()OVER加个行号就OK了。
kevin#1 2014-04-03
  • 打赏
  • 举报
回复
我补充下:通过的应用我会得到一个这样的执行脚本,而现在的脚本是没有进行分页的, if(1=1) begin select * from ts_user endif(1=2) begin select * from ts_user end 我想对这段查询出来的数据在数据库,进行分页。
直面人生 2014-04-03
  • 打赏
  • 举报
回复
我语文没学好,是分页操作无论如何都会执行?那放在外面就好了。。
kevin#1 2014-04-03
  • 打赏
  • 举报
回复
引用 1 楼 fredrickhu 的回复:
你这个脚本怎么都两个IF里面的都一样?
假如,在时间环境中是不一样的,会有一个变量来接受,和判断。
--小F-- 2014-04-03
  • 打赏
  • 举报
回复
你这个脚本怎么都两个IF里面的都一样?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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