Jika Anda dapat menggunakan PHP, saya sarankan Anda melakukannya melalui PHP. Saya belum menemukan cara untuk melakukan ini dengan MySQL. Yang ini akan memperbarui SEMUA baris yang memiliki jumlah> 1, termasuk yang asli.
UPDATE table
SET product_code = CONCAT(product_code, ' Copy')
GROUP BY product_code
HAVING COUNT(*) > 1
yang tidak Anda inginkan. Jadi, jika Anda menggunakan php, Anda dapat melakukan ini (dengan asumsi Anda memiliki jumlah baris yang sedikit di tabel Anda (3000 baik-baik saja))
<?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)
}
}
Penafian: Tidak diuji! Buat cadangan terlebih dahulu!