簡體   English   中英

為 SQL Server 中的列中的每個值計算冗余

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM