[英]Count redundant for each value in a column in SQL server
如果我在 SQL Server 2019 數據庫中有下表,如下所示:
|id | name | count |
+-----+--------+--------+
| 1 | rose | 1 |
| 2 | peter | 1 |
| 3 | ann | 1 |
| 4 | rose | 2 |
| 5 | ann | 2 |
| 6 | ann | 3 |
| 7 | mike | 1 |
我想知道插入的名稱是否已經存在於“名稱”列中,以及“計數”列中顯示的在它旁邊的計數有多少次和正確。 例如,當第二次插入 ann 時,我將計數值放在它旁邊,即 2,第三次插入 ann 時,我將 3 放在它旁邊。
如何使用 SQL 做到這一點?
謝謝
這是使用insert ... select
語法的一種方法:
insert into mytable (name, cnt)
select v.name, (select count(*) + 1 from mytable t where t.name = v.name)
from (values (@name)) v(name)
要插入的值在派生表values()
作為@name
給出。 然后我們使用子查詢來計算表中已經存在多少這樣的名字。
我建議您在查詢表時計算此信息,而不是在插入行時計算:
select t.*,
row_number() over (partition by name order by id) as count
from t;
該值將始終正確——即使在更新數據或刪除行時也是如此。
Select Name, Count(*)
From Table
Group By Name
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.