Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Đổi tên các hàng trùng lặp trong MySQL

Nếu bạn có thể sử dụng PHP, tôi khuyên bạn nên sử dụng PHP. Tôi chưa tìm thấy cách nào để thực hiện việc này với MySQL. Cái này sẽ cập nhật TẤT CẢ các hàng có số lượng> 1, bao gồm cả hàng gốc.

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

mà bạn không muốn. Vì vậy, nếu bạn sử dụng php, bạn có thể làm điều này (giả sử bạn có số lượng hàng thấp trong bảng của mình (3000 cũng được))

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

Tuyên bố từ chối trách nhiệm: Không được thử nghiệm! Trước tiên, hãy sao lưu!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dữ liệu chuỗi, bị cắt ngắn bên phải:1406 Dữ liệu quá dài cho cột

  2. MySQL bind-address trong Docker container

  3. Tiêu đề Danh mục đa ngôn ngữ trong Cơ sở dữ liệu Mysql

  4. MySQL WHERE NOT IN cực kỳ chậm

  5. Bảo mật cơ bản, PHP mySQl