我有一张这样的表
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查询实现此目的,还是应该编写脚本?
答案 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