l--*_*''' 1 sql sql-server-2008
这是我的数据:
liza
liza
liza
alex
alex
alex
liza
Run Code Online (Sandbox Code Playgroud)
我想用每个名称的每次出现的数据更新此表,如下所示:
liza 4
liza 4
liza 4
alex 3
alex 3
alex 3
liza 4
Run Code Online (Sandbox Code Playgroud)
到目前为止我有:
update table set column2=count(name) group by name
Run Code Online (Sandbox Code Playgroud)
非常感谢你的帮助
update T1 set
Column2 = T2.C
from YourTable as T1
inner join (
select count(*) as C, Name
from YourTable
group by Name
) as T2
on T1.Name = T2.Name
Run Code Online (Sandbox Code Playgroud)
带有表变量的示例
declare @YourTable table
(
Name varchar(10),
Column2 int
)
insert into @YourTable (Name) values
('liza'),('liza'),('liza'),('alex'),('alex'),('alex'),('liza')
update T1 set
Column2 = T2.C
from @YourTable as T1
inner join (
select count(*) as C, Name
from @YourTable
group by Name
) as T2
on T1.Name = T2.Name
Run Code Online (Sandbox Code Playgroud)
在这里试试吧.http://data.stackexchange.com/stackoverflow/q/102392/update-with-count
这是使用CTE的另一种方式count(*) over()
.
declare @YourTable table
(
Name varchar(10),
Column2 int
)
insert into @YourTable (Name) values
('liza'),('liza'),('liza'),('alex'),('alex'),('alex'),('liza')
;with cte as
(
select Column2,
count(*) over(partition by Name) as C
from @YourTable
)
update cte set
Column2 = C
Run Code Online (Sandbox Code Playgroud)
这个查询你可以在这里试试.http://data.stackexchange.com/stackoverflow/q/102394/update-with-count-2