-1

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

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

我希望能够选择重复项并用 PHP 重命名它们。那可能吗?如果它为一个“bedrijfsnaam-plaats”组合找到三个重复项,我想在“bedrijfsnaam”值的末尾添加“I”、“II”、“III”。这甚至可能吗?我可以运行某种循环吗?

谢谢..

4

2 回答 2

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

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

于 2013-11-22T21:37:22.710 回答
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;

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

于 2013-11-22T22:02:23.433 回答