0

我有一张有几千条记录的表。我想更新具有重复名字的所有记录如何通过单个查询实现此目的?示例表结构:

Fname varchar(100)
Lname varchar(100)
Duplicates int

必须使用单个查询的重复总数更新此重复列。如果不循环运行,这可能吗?

4

4 回答 4

2

我有一张有几千条记录的表。我想更新具有重复名字的所有记录如何通过单个查询实现此目的?

您确定要存储所谓的重复项的数量吗?如果没有,这是一个相当简单的查询:

SELECT fname, COUNT(1) AS number FROM yourtable GROUP BY fname;

不过,我不明白您为什么要存储该号码。如果插入了另一条记录怎么办?如果有记录被删除怎么办?“重复数”将保持不变,因此在第一次突变时会变得不正确。

于 2012-05-01T15:01:25.680 回答
2
update table as t1
inner join ( 
select
fname,
count(fname) as total
from table
group by fname) as t2
on t1.fname = t2.fname
set t1.duplicates = t2.total
于 2012-05-01T14:57:46.130 回答
0

首先创建列,然后编写如下查询:

UPDATE table SET table.duplicates = (SELECT COUNT(*) FROM table r GROUP BY Fname/Lname/some_id)

也许这个其他SO会有所帮助?

如何从 SQL Server 中的 SELECT 更新?

于 2012-05-01T14:57:32.750 回答
-1

您可能无法做到这一点。您无法更新您在同一查询中选择的同一个表。

于 2012-05-01T14:56:22.930 回答