我有一张这样的桌子
CREATE TABLE [dbo].[tblUserLink](
[IDUserLink] [int] IDENTITY(1,1) NOT NULL,
[IDUser] [int] NOT NULL,
[IDRegie] [varchar](50) NOT NULL,
[DefaultAgency] [bit] NULL
)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个查询/脚本来更新字段DefaultAgency.我想将它设置为1,以获得具有相同IDUser的每组记录的第一条记录.
例如:
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
Run Code Online (Sandbox Code Playgroud)
我可以使用简单的SQL查询来实现这一点,还是应该编写脚本?
update tblUserLink
set DefaultAgency = 1
where IDUserLink in
(select min(IDUserLink) from tblUserLink group by IDUser)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是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
Run Code Online (Sandbox Code Playgroud)