5

我有一张这样的桌子

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 查询来实现这一点,还是应该编写脚本?

4

2 回答 2

9
update tblUserLink
set DefaultAgency = 1
where IDUserLink in
(select min(IDUserLink) from tblUserLink group by IDUser)
于 2012-10-17T09:10:17.603 回答
6

如果您使用的是 SQL Server 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
于 2012-10-17T14:22:51.343 回答