sql >> Base de Datos >  >> RDS >> Mysql

Cambiar el nombre de filas duplicadas en MySQL

Si puede usar PHP, le recomendaría que lo haga a través de PHP. No he encontrado una manera de hacer esto con MySQL. Éste actualizará TODAS las filas que tengan recuento> 1, incluido el original.

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

que no quieres. Entonces, si usa php, puede hacer esto (suponiendo que tiene un número bajo de filas en su tabla (3000 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)
    }
}

Descargo de responsabilidad: ¡No probado! ¡Haz una copia de seguridad primero!