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
樣品與變量表
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
這裏試試吧。 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
而這個查詢,你可以在這裏試試。 http://data.stackexchange.com/stackoverflow/q/102394/update-with-count-2
消息209,級別16,狀態1,行9 不明確的列名'name'。 消息209,級別16,狀態1,行9 不明確的列名稱'name'。 – 2011-06-07 19:05:58
我收到上述錯誤。應該是t2.name? – 2011-06-07 19:06:21
@I__ - 使用您可以測試的表變量更新一些代碼的答案。我猜你在你的版本中有一個錯字。 – 2011-06-07 19:16:49