sql >> Databasteknik >  >> RDS >> Mysql

Byt namn på dubblettrader i MySQL

Om du kan använda PHP skulle jag rekommendera dig att göra det via PHP. Jag har inte hittat något sätt att göra detta med MySQL. Den här kommer att uppdatera ALLA rader med antal> 1, inklusive originalet.

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

som du inte vill ha. Så om du använder php kan du göra detta (förutsatt att du har lågt antal rader i tabellen (3000 är bra))

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

Ansvarsfriskrivning: Ej testad! Gör en säkerhetskopia först!



  1. hur man sorterar varchar-kolumn som innehåller numeriska värden med linq lambdas till Entity

  2. Sqlalchemy-bulkuppdatering i MySQL fungerar väldigt långsamt

  3. Hur POSITION() fungerar i MariaDB

  4. Infoga data via en tabellvärderad funktion i SQL Server