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

Bagaimana cara mengubah baris duplikat menjadi nilai unik di mysql?

ini sedikit rumit .. Saya menguji pada host lokal saya dan melakukan apa yang Anda inginkan .. beri tahu saya jika Anda memiliki pertanyaan. SQL FIDDLE

UPDATE temp t1, 
(
    SELECT 
        id as unique_id, 
        new_name 
    FROM(
        SELECT
          id,
          IF(@ROW = Name, @COUNT, @COUNT := 1),
          CONCAT(Name, ' - ', @COUNT) AS new_name,
          @ROW := Name,
          @COUNT := @COUNT + 1
        FROM temp
        JOIN (SELECT @COUNT := 0, @ROW := "") AS t
        WHERE Name IN(SELECT Name FROM temp
        GROUP BY Name
        HAVING COUNT(Name) > 1)
    ) AS temp_test
) as testing
SET t1.Name = testing.new_name where t1.id = testing.unique_id

Hasil akhir terlihat seperti ini:GAMBAR

EDIT: Ini mungkin bekerja lebih baik demi kinerja

1. JALANKAN PERTAMA QUERY INI

SET SESSION group_concat_max_len = 1000000;  -- longer if needed
SET @query1 := (
SELECT 
    GROUP_CONCAT(DISTINCT unique_name) 
FROM temp
JOIN(
    select Name as unique_name
    FROM temp
    GROUP BY name
    HAVING COUNT(Name) > 1
) as t
);

2. LALU JALANKAN PEMBARUAN INI

UPDATE temp t1, 
(
    SELECT 
        id as unique_id, 
        new_name 
    FROM(
        SELECT
          id,
          IF(@ROW = Name, @COUNT, @COUNT := 1),
          CONCAT(Name, ' - ', @COUNT) AS new_name,
          @ROW := Name,
          @COUNT := @COUNT + 1
        FROM temp
        JOIN (SELECT @COUNT := 0, @ROW := "") AS t
        WHERE FIND_IN_SET (`name`, @query1)
    ) AS temp_test
) as testing
SET t1.Name = testing.new_name where t1.id = testing.unique_id

Saya menguji ini di lokal saya dan berfungsi sehingga Anda harus bisa menjalankannya :)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kode Kesalahan MySQL:1064. Anda memiliki kesalahan dalam sintaks SQL Anda

  2. Loop bersarang dalam prosedur tersimpan mysql

  3. tidak dapat memulai MySql di Mac OS 10.6 Snow Leopard

  4. Migrasi database dari Postgres ke MySQL

  5. Memilih Baris Acak di MySQL