首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

WITH AS sql 查询有关问题

2012-12-19 
WITH AS sql 查询问题最近在写存储过程的时候感觉with as 非常好用写起来都比较方便,不过我遇到一个问题。

WITH AS sql 查询问题
最近在写存储过程的时候感觉with as 非常好用写起来都比较方便,不过我遇到一个问题。比如传递了参数@startindex,@endindex,@orderby 
wth tt as


 select  *  from u 


select  * from c where id between @startindex and @endindex  order  by @orderby 问题就是这个参数@orderby怎么处理好呢》
我最终解决的办法就是声明一个临时表插入 insert into #t2 select  * from c 然后exec('select * from #t2 order by '+@orderby+' ') 

最终搞来搞去又是拼接了字符,就没好的解决方法了吗?我虽然平时要求自己多想方法少写一点代码,总是想找一个方法来替代它,我还是没放弃觉得应该有更好的实现是我不知道罢了。
[最优解释]
如果要用orderby做条件的话,除了拼接我也没有其他办法,等高手来帮你看看吧


declare @startindex int set @startindex=16
declare @endindex int set @endindex=25
declare @orderby varchar(20) set @orderby='number'

declare @sql varchar(max)
set @sql='
;with maco as
(
select row_number() over (order by '+@orderby+') as rowid,* 
from master..spt_values
)
select * from maco 
where rowid between '+ltrim(@startindex)+' and '+ltrim(@endindex)

exec(@sql)

[其他解释]
可以用case when试试
http://blog.csdn.net/dba_huangzj/article/details/7684520
[其他解释]
学习
引用:
可以用case when试试
http://blog.csdn.net/dba_huangzj/article/details/7684520

[其他解释]
引用:
最近在写存储过程的时候感觉with as 非常好用写起来都比较方便,不过我遇到一个问题。比如传递了参数@startindex,@endindex,@orderby 
wth tt as


 select  *  from u 


select  * from c where id between @startindex and @endindex  order  by @or……


这中时候一般考虑动态语句实现吧  叶子哥哥已经给出写法

[其他解释]
引用:
如果要用orderby做条件的话,除了拼接我也没有其他办法,等高手来帮你看看吧

SQL code

declare @startindex int set @startindex=16
declare @endindex int set @endindex=25
declare @orderby varchar(20) set @orderby='number'

declare @sq……
支持叶子哥哥~
[其他解释]
叶子姐姐当然无可挑剔拉。
[其他解释]
你说你是高手吗?程序员搞一个女的头像干嘛
引用:
如果要用orderby做条件的话,除了拼接我也没有其他办法,等高手来帮你看看吧


SQL code

declare @startindex int set @startindex=16
declare @endindex int set @endindex=25
declare @orderby varchar(20) set @orderby='number'

decla……

[其他解释]
那两个姐姐都是男滴,别太在乎这事,你还有什么问题?没有就结贴,有就继续问
[其他解释]
刚才看了你给我那个链接,感觉可以实现order by 就是要把所有字段都写死,还有就是搜索的时候不方便,如果条件搜索多的话

引用:
那两个姐姐都是男滴,别太在乎这事,你还有什么问题?没有就结贴,有就继续问

[其他解释]
这也是一种方法,目前为止我已经找到了很多种方法
引用:
如果要用orderby做条件的话,除了拼接我也没有其他办法,等高手来帮你看看吧


SQL code

declare @startindex int set @startindex=16
declare @endindex int set @endindex=25
declare @orderby varchar(20) set @orderby='number'

decla……

[其他解释]
case when加拼接sql的话,可以随你的参数而排序,不一定要写死

热点排行