使用PHP重命名重复记录

时间:2013-11-22 21:34:07

标签: php mysql sql redundancy deduplication

我知道您可以使用以下查询在MYSQL中选择重复的行:

SELECT ID, bedrijfsnaam, plaats, COUNT( * ) 
FROM profiles
GROUP BY bedrijfsnaam, plaats
HAVING COUNT( * ) >1

我希望能够选择重复项并使用PHP重命名它们。那可能吗? 如果它找到一个'bedrijfsnaam-plaats'组合的三个重复,我想补充 在'bedrijfsnaam'价值结束时'我','II','III'。这甚至可能吗?在那儿 我可以运行某种循环吗?

谢谢..

2 个答案:

答案 0 :(得分:1)

您可以直接找到重复的行,而不是计数:

SELECT DISTINCT p2.ID, p2.bedrijfsnaam, p2.plaats
FROM profiles p
JOIN profiles p2 on p2.bedrijfsnaam = p.bedrijfsnaam
 AND p2.plaats = p.plaats
 AND p2.ID > p.ID          -- this is where the magic occurs

然后相应地运行更新......

答案 1 :(得分:1)

我认为这两个查询可以是一个答案:

create table maptable as 
SELECT
  p2.ID,
  concat(p2.bedrijfsnaam,count(*)) as bedrijfsnaam_new
FROM profiles p
JOIN profiles p2 on p2.bedrijfsnaam = p.bedrijfsnaam
 AND p2.plaats = p.plaats
 AND p2.ID > p.ID
group by p2.id,p2.bedrijfsnaam, p2.plaats;

update
  profiles,
  maptable
set
  profiles.bedrijfsnaam=bedrijfsnaam_new
where
  profiles.id=maptable.id;

第一部分基于丹尼斯的回答......