यदि आप PHP का उपयोग कर सकते हैं, तो मैं आपको इसे PHP के माध्यम से करने की सलाह दूंगा। मुझे MySQL के साथ ऐसा करने का कोई तरीका नहीं मिला है। यह उन सभी पंक्तियों को अपडेट कर देगा जिनकी गिनती> 1 है, जिसमें मूल भी शामिल है।
UPDATE table
SET product_code = CONCAT(product_code, ' Copy')
GROUP BY product_code
HAVING COUNT(*) > 1
जो आप नहीं चाहते। इसलिए, यदि आप PHP का उपयोग करते हैं, तो आप ऐसा कर सकते हैं (यह मानते हुए कि आपकी तालिका में पंक्तियों की संख्या कम है (3000 ठीक है))
<?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)
}
}
अस्वीकरण: टेस्ट नहीं हुआ! पहले बैकअप लें!