熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> MySQL >> 正文

解析SQLServer2005的Top功能

2013-11-23 21:06:13  來源: MySQL 

  所有人都知道select top 的用法但很多人還不知道update top 和 delete top 怎麼用以往的做法是set rowcount來指定其實SQL中對於Top語句的增強除了參數化之外還包括對update和delete的支持但可惜的是還不支持自定義 的order by列如果要自定義派序列可以借助CTE對於CTE的任何更改都會影響到原始表
我們看下面的測試代碼

復制代碼 代碼如下:
set nocount on
use tempdb
go
if (object_id (tb ) is not null )
drop table tb
go
create table tb (id int identity ( ) name varchar ( ) tag int default )
insert into tb (name ) select a
insert into tb (name ) select b
insert into tb (name ) select c
insert into tb (name ) select d
insert into tb (name ) select e
/*更新前兩行
id name tag

a
b
c
d
e
*/
update top ( ) tb set tag =
select * from tb
/*更新後兩行
id name tag

a
b
c
d
e
*/
;with t as
(
select top ( ) * from tb order by id desc
)
update t set tag =
select * from tb
/*刪除前兩行
id name tag

c
d
e
*/
delete top ( ) from tb
select * from tb
/*刪除後兩行
id name tag

c
*/
;with t as
(
select top ( ) * from tb order by id desc
)
delete from t
select * from tb
set nocount off

  
我會在下一篇文章中介紹一個應用就是很多人關心的如何獨占查詢(就是一條數據只被一個終端select到)
如果你感興趣的話可以自己先思考一下我給一個提示
SQLServer有一個關鍵字Output它可以將更改和插入的數據輸出我們配合update top就可以模擬出來一個相對高效的獨占查詢的事物此功能適合用在並行的任務處理或者消費中

 
From:http://tw.wingwit.com/Article/program/MySQL/201311/29576.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.