sql >> Databáze >  >> RDS >> Mysql

Přejmenujte duplicitní řádky v MySQL

Pokud umíte používat PHP, doporučil bych vám to udělat přes PHP. Nenašel jsem způsob, jak to udělat s MySQL. Tento aktualizuje VŠECHNY řádky s počtem> 1, včetně původního.

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

kterou nechceš. Pokud tedy používáte php, můžete to udělat (za předpokladu, že máte v tabulce nízký počet řádků (3000 je v pořádku))

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

Odmítnutí odpovědnosti: Netestováno! Nejprve vytvořte zálohu!



  1. Chyba při odesílání paketu QUERY

  2. SQLite GLOB

  3. Jak zrychlit hromadné vkládání na MS SQL Server pomocí pyodbc

  4. Google Chart API využívá hodnotu data a času