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

Omdøb dublerede rækker i MySQL

Hvis du kan bruge PHP, vil jeg anbefale dig at gøre det via PHP. Jeg har ikke fundet en måde at gøre dette på med MySQL. Denne vil opdatere ALLE rækker med tæller> 1, inklusive originalen.

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

som du ikke ønsker. Så hvis du bruger php, kan du gøre dette (forudsat at du har lavt antal rækker i din tabel (3000 er fint))

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

Ansvarsfraskrivelse: Ikke testet! Lav en sikkerhedskopi først!



  1. Få alle objekter uden loop i OOP MySQLi

  2. Sådan opretter du en udarbejdet erklæring dynamisk - og genbruger forespørgslen

  3. SQLite Omdøb kolonne

  4. MySQL giver alle privilegier til databasen undtagen én tabel