SQLServer2005의 Top 기능 확인

2387 단어
모든 사람들이 select top의 사용법을 알고 있지만, 많은 사람들이 업데이트 top와 delete top를 어떻게 사용하는지 모른다.이전에는 set rowcount으로 지정했는데, 사실 SQL 2005에서 Top 문장에 대한 강화는 매개 변수화 외에 업데이트와 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 (1 , 1 ), name varchar (10 ), tag int default 0 )
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
----------- ---------- -----------
1           a          1
2           b          1
3           c          0
4           d          0
5           e          0
*/
update top (2 )  tb set tag = 1
select * from tb
/*--
id          name       tag
----------- ---------- -----------
1           a          1
2           b          1
3           c          0
4           d          1
5           e          1
*/
;with t as
(
    select top (2 ) * from tb order by id desc
)
update   t set tag = 1
select * from tb
/*--
id          name       tag
----------- ---------- -----------
3           c          0
4           d          1
5           e          1
*/
delete top (2 ) from tb
select * from tb
/*--
id          name       tag
----------- ---------- -----------
3           c          0
*/
;with t as
(
    select top (2 ) * from tb order by id desc
)
delete from   t
select * from tb
set nocount off

다음 글에서 많은 사람들이 관심을 가지고 조회를 독점하는 방법을 소개할 것이다. (한 데이터가 한 단말기에서만 select에 전달되는 것이다.)
관심이 있다면 먼저 생각해 보세요. 제가 힌트를 드릴게요. SQLServer 2005에는 키워드 Output이 있는데 변경과 삽입된 데이터를 출력할 수 있습니다. 업데이트top와 결합하면 상대적으로 효율적인 독점 조회 사물을 모의할 수 있습니다.이 기능은 병행된 임무 처리나 소비에 적합하다.

좋은 웹페이지 즐겨찾기