Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Benennen Sie doppelte Zeilen in MySQL um

Wenn Sie PHP verwenden können, würde ich Ihnen empfehlen, dies über PHP zu tun. Ich habe keine Möglichkeit gefunden, dies mit MySQL zu tun. Dieser aktualisiert ALLE Zeilen mit einer Anzahl> 1, einschließlich des Originals.

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

was du nicht willst. Wenn Sie also PHP verwenden, können Sie dies tun (vorausgesetzt, Sie haben eine geringe Anzahl von Zeilen in Ihrer Tabelle (3000 ist in Ordnung))

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

Haftungsausschluss: Nicht getestet! Machen Sie zuerst ein Backup!