sql >> Database >  >> RDS >> Mysql

Hoe dubbele rijen te veranderen in unieke waarden in mysql?

dit is een beetje lastig.. Ik heb het getest op mijn lokale host en het doet wat je wilt.. laat het me weten als je vragen hebt. 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

De uiteindelijke uitvoer ziet er als volgt uit:PICTURE

BEWERKEN: Dit kan beter werken omwille van de prestaties

1. VOER DEZE VRAAG EERST UIT

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. VOER DAN DEZE UPDATE UIT

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

Ik heb dit getest op mijn lokale en het werkt, dus je zou dit moeten kunnen uitvoeren :)



  1. Wat is de beste oplossing voor het poolen van databaseverbindingen in Python?

  2. H2 - Fout bij toegang tot gekoppelde tabel met SQL-instructie SELECT * FROM null T

  3. Werken met Salesforce.com-gegevens in SQL Server Reporting Services

  4. 5 trucs voor het garanderen van piekprestaties van SQL Server