Mysql
 sql >> Base de données >  >> RDS >> Mysql

Renommer les lignes en double dans MySQL

Si vous pouvez utiliser PHP, je vous recommande de le faire via PHP. Je n'ai pas trouvé de moyen de le faire avec MySQL. Celui-ci mettra à jour TOUTES les lignes ayant un nombre> 1, y compris l'original.

UPDATE table
SET product_code = CONCAT(product_code, ' Copy')
GROUP BY product_code
HAVING COUNT(*) > 1

dont vous ne voulez pas. Donc, si vous utilisez php, vous pouvez le faire (en supposant que vous avez un faible nombre de lignes dans votre table (3000 c'est bien))

<?php
$result = mysql_query("SELECT * FROM table");
$rowsCnt = array();
while($row = mysql_fetch_assoc($result)){
    $rows[] = $row;
    $rowsCnt[ $row['product_code'] ]++;
}

foreach($rows as $index => $row) {
    if ($rowsCnt[ $row['product_code'] ] > 1) {
        mysql_query("UPDATE table SET product_code = '".mysql_real_escape_string($row['product_code'])." Copy' LIMIT ".($rowsCnt[ $row['product_code'] ] - 1)
    }
}

Avis de non-responsabilité : Pas testé! Faites d'abord une sauvegarde !