NOVOTS KMS 词汇表 Glossary    联系我们 Contact Us
查询 Search  
   
按类别浏览 Browse by Category
NOVOTS KMS .: 数据库 .: sql2005使用小技巧

sql2005使用小技巧

 sqlserver2005 技巧

                             from http://www.cnblogs.com/luoxiao/archive/2007/08/07/846430.html

1.     利用 ROW_NUMBER 实现分页

ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID)
    
--Freight从小到大排序,求2030行的结果 
select * from( 
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders 
) a 
where row between 20 and 30 

2.     TOP的参数

   --n名的订单
declare @n int 
set @n = 10 
select TOP(@n) * from Orders 

3.排名

   select * from( 
    select OrderId, Freight, RANK() OVER(order by Freight) as rank from Orders 
) a 
where rank between 20 and 30

4.try ... catch

   SET XACT_ABORT ON  -- 打开 try功能 
BEGIN TRY 
    begin tran 
        insert into Orders(CustomerId) values(-1
    commit tran 
    print 'commited' 
END TRY 
BEGIN CATCH 
    rollback    
    print 'rolled back' 
END CATCH 

5.通用表达式CTE
通过表达式可免除你过去创建临时表的麻烦。特别,通过表达式还支持递归。

--例子:结合通用表达式进行分页
WITH OrderFreight AS( 
    select OrderId, Freight, ROW_NUMBER() OVER(order by Freight) as row from Orders 

select OrderId, Freight from OrderFreight where row between 10 and 20 

 


这篇文章对你多有用?

用户评语

添加评语
当前还没有评语.


.: .: .: .: .:
[ 登陆 ]
北京护航科技有限公司 2006

Novots Technologies Limited