Mysql
 sql >> Database >  >> RDS >> Mysql

Rinomina le righe duplicate in MySQL

Se puoi usare PHP, ti consiglierei di farlo tramite PHP. Non ho trovato un modo per farlo con MySQL. Questo aggiornerà TUTTE le righe con conteggio> 1, incluso l'originale.

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

che non vuoi. Quindi, se usi php, puoi farlo (supponendo che tu abbia un basso numero di righe nella tua tabella (3000 vanno bene))

<?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)
    }
}

Disclaimer: Non testato! Prima fai un backup!