使用单个查询计算重复项并更新表

时间:2012-05-01 14:51:30

标签: php mysql sql

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

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

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

4 个答案:

答案 0 :(得分: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

答案 1 :(得分:2)

  

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

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

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

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

答案 2 :(得分:0)

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

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

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

How do I UPDATE from a SELECT in SQL Server?

答案 3 :(得分:-1)

您可能无法执行此操作。您无法在同一查询中更新您选择的同一个表。