更新一组记录t-sql的第一条记录

时间:2012-10-17 08:56:10

标签: sql-server tsql

我有一张这样的表

CREATE TABLE [dbo].[tblUserLink](
    [IDUserLink] [int] IDENTITY(1,1) NOT NULL,
    [IDUser] [int] NOT NULL,
    [IDRegie] [varchar](50) NOT NULL,
    [DefaultAgency] [bit] NULL
)

我正在寻找一个查询/脚本来更新字段DefaultAgency。对于具有相同IDUser的每组记录的第一条记录,我想将其设置为1。

示例:

IDUserLink IDUser IDRegie DefaultAgency (Goal)
1          1      1       null           DefaultAgency to be set to 1
2          1      2       null
3          1      3       null
4          2      2       null           DefaultAgency to be set to 1
5          2      1       null     
6          3      1       null           DefaultAgency to be set to 1
 ...etc 

我可以使用简单的SQL查询实现此目的,还是应该编写脚本?

2 个答案:

答案 0 :(得分:7)

update tblUserLink
set DefaultAgency = 1
where IDUserLink in
(select min(IDUserLink) from tblUserLink group by IDUser)

答案 1 :(得分:4)

如果您使用的是SQL 2005+,则可以使用公用表表达式:

with cte as (
   select *,
      row_number() over (partition by IDUser order by IDUserLink) as [rn]
   from tblUserLink
)
update c
set DefaultAgency = 1
from cte as c
where c.rn = 1
相关问题