sql >> Database >  >> RDS >> Mysql

Hernoem dubbele rijen in MySQL

Als je PHP kunt gebruiken, raad ik je aan om het via PHP te doen. Ik heb geen manier gevonden om dit met MySQL te doen. Deze zal ALLE rijen updaten met een telling> 1, inclusief het origineel.

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

die je niet wilt. Dus als je php gebruikt, kun je dit doen (ervan uitgaande dat je een laag aantal rijen in je tabel hebt (3000 is prima))

<?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: Niet getest! Maak eerst een back-up!



  1. Mysql_real_escape_string() Waarschuwing Verwarring

  2. Beste paging-oplossing met SQL Server 2005?

  3. VLDB's in de 20-tieners:je hebt een grotere nodig ...

  4. MySQL in AWS EC2 - Hoe schaalt het?