Mysql
 sql >> база данни >  >> RDS >> Mysql

Преименувайте дублиращи се редове в MySQL

Ако можете да използвате 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)
    }
}

Отказ от отговорност: Не е тестван! Първо направете резервно копие!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите текуща дата и час в MySQL

  2. Създайте тригер, за да изтриете редове, които са на повече от 90 дни

  3. Изберете ред и редове около него

  4. PDO MySQL:Вмъкване на няколко реда в една заявка

  5. MySQL + Query за връщане на всички редове, които имат колони, които са „активни“ в друга таблица