Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Ganti nama baris duplikat di MySQL

Jika Anda dapat menggunakan PHP, saya sarankan Anda melakukannya melalui PHP. Saya belum menemukan cara untuk melakukan ini dengan MySQL. Yang ini akan memperbarui SEMUA baris yang memiliki jumlah> 1, termasuk yang asli.

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

yang tidak Anda inginkan. Jadi, jika Anda menggunakan php, Anda dapat melakukan ini (dengan asumsi Anda memiliki jumlah baris yang sedikit di tabel Anda (3000 baik-baik saja))

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

Penafian: Tidak diuji! Buat cadangan terlebih dahulu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CakePHP:memiliki Banyak asosiasi yang tidak dikenali

  2. Versi portabel MySql

  3. kueri SQL sederhana memberikan penggunaan fungsi grup yang tidak valid

  4. MySQL memilih 10 baris acak dari 600 ribu baris dengan cepat

  5. Mempercepat database wordpress besar (lambat)