2011-06-07 54 views

回答

5
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

+0

消息209,級別16,狀態1,行9 不明確的列名'name'。 消息209,級別16,狀態1,行9 不明確的列名稱'name'。 – 2011-06-07 19:05:58

+0

我收到上述錯誤。應該是t2.name? – 2011-06-07 19:06:21

+0

@I__ - 使用您可以測試的表變量更新一些代碼的答案。我猜你在你的版本中有一個錯字。 – 2011-06-07 19:16:49