>我有一个有几千条记录的表。我想更新所有具有重复名字的记录如何使用单个查询实现此目的?示例表结构:
Fname varchar(100)
Lname varchar(100)
Duplicates int
必须使用单个查询的重复项总数更新此重复列。这有可能不循环运行吗?
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
我有一个有几千条记录的表。我想更新所有具有重复名字的记录 如何通过单个查询实现此目的?
您绝对确定要存储所谓的重复项的数量吗?如果没有,这是一个相当简单的查询:
SELECT fname, COUNT(1) AS number FROM yourtable GROUP BY fname;
我不明白你为什么要存储这个号码。如果插入了另一条记录怎么办?如果删除了记录怎么办?"重复数量"将保持不变,因此在第一次突变时将变得不正确。
首先创建列,然后编写如下所示的查询:
UPDATE table SET table.duplicates = (SELECT COUNT(*) FROM table r GROUP BY Fname/Lname/some_id)
也许这个其他SO会有所帮助?
如何從 SQL Server 中的 SELECT 更新?
您可能无法执行此操作。不能在同一查询中更新要从中选择的同一表。