php - 如何使用 PHP 或仅使用 MySQL 在 MySQL 中重命名重复项

标签 php mysql sql rename

到目前为止,尝试使用该代码重命名 MySQL 数据库中的重复项,但这只会在名称末尾添加 1。所以如果我有

    UPDATE phpfox_photo n 
  JOIN (SELECT title_url, MIN(photo_id) min_id FROM phpfox_photo GROUP BY title_url HAVING COUNT(*) > 1) d
    ON n.title_url = d.title_url AND n.photo_id <> d.min_id
SET n.title_url = CONCAT(n.title_url, '1'); 


Anna
Anna
Anna

结果是

Anna
Anna1
Anna11

当我得到 200 Annas 结果是 Anna1111111111111111111111111111111111111111111....等

如何在以下公司重命名

Anna
Anna1
Anna2

最佳答案

如果我没有遗漏任何东西,您可以创建一个存储过程,使用游标迭代抛出您的行,如下所示:

DECLARE counter INT DEFAULT 0;
DECLARE num_rows INT DEFAULT 0;
DECLARE offset INT;
DECLARE title_urlvalue VARCHAR(50);
DECLARE no_more_rows BOOLEAN;
DECLARE ucur CURSOR FOR
  SELECT
    UPDATE phpfox_photo n 
    JOIN (SELECT title_url, MIN(photo_id) min_id 
    FROM phpfox_photo GROUP BY title_url HAVING COUNT(*) > 1) d
    ON n.title_url = d.title_url AND n.photo_id <> d.min_id;
SET offset = 1;
SET no_more_rows = TRUE;
select FOUND_ROWS() into num_rows;
OPEN ucur;
uloop: LOOP
  FETCH  ucur
  if counter >= num_rows then
    no_more_rows = False;
  endif
  INTO   title_urlvalue;
  IF no_more_rows THEN
    CLOSE ucur;
    LEAVE uloop;
   END IF;
   update title_urlvalue = Concat(title_urlvalue,offset);
  SET offset = offset + 1;
  SET counter = counter + 1;
END LOOP uloop;
close ucur;

关于php - 如何使用 PHP 或仅使用 MySQL 在 MySQL 中重命名重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7621460/

相关文章:

php - Mysql查询返回表结构

sql - 双引号情况下的 postgresql 全文搜索行为

sql - 如何自动更新 SQL 数据库

php - Laravel 预加载约束问题

php - 将 "require"与 GET/POST 数据一起使用是否安全?

php - 跟踪和过滤自定义分析的自动完成关键字

php - 如何在 cakephp 2.2 中使用 $_SESSION 变量

mysql - 将 null 插入 char(1)

mysql - 尝试通过添加连接在一张表中获得 2 个总和

sql - 自增复合主键