【发布时间】:2012-09-12 03:08:27
【问题描述】:
我必须清理一个表字段(article_title),创建一个新字段,其中重复的标题被更改为:
id | title | new_title
34 | My Duplicate Title | My Duplicate Title
...
95 | My Duplicate Title | My Duplicate Title (2)
我使用了这个mysql查询,但是它不起作用(所有等级都是1):
SET @rank := 0;
SET @prev := NULL;
SELECT @rank := IF(@prev = title, @rank + 1, 1) AS rank,
id, IF(@rank>1, Concat(title, ' (', @rank, ')'), title), @prev := title
FROM articles ORDER BY title ASC
我做错了什么?
【问题讨论】:
-
如果你有一个唯一的ID(或另一个唯一的字段),那么你可以设置括号(2),(3)等中的数字作为具有相同标题但较小的 ID:
-
第二个可能的副本包含基于存储过程的(长)解决方案。但是,我想知道为什么不能仅使用变量进行此查询和/或如果我在解决方案中遗漏了某些内容...
标签: mysql