sql >> Database >  >> RDS >> Mysql

MySQL consolideert dubbele gegevensrecords via UPDATE / DELETE

Dit is slechts een projectie. Het werkt de tabel niet bij en verwijdert geen enkele gegevens.

SELECT  MIN(ID) ID,
        Username,
        MAX(Red) max_Red,
        MAX(Green) max_Green,
        MAX(Yellow) max_Yellow,
        MAX(Blue) max_Blue,
        MAX(Orange) max_Orange,
        MAX(Purple) max_Purple
FROM    Colors
GROUP   BY Username

UPDATE

als u deze records echt wilt verwijderen, moet u eerst de UPDATE-opdracht uitvoeren voordat u de records kunt verwijderen

UPDATE  Colors a
        INNER JOIN
        (
            SELECT  MIN(ID) min_ID,
                    Username,
                    MAX(Red) max_Red,
                    MAX(Green) max_Green ,
                    MAX(Yellow) max_Yellow,
                    MAX(Blue) max_Blue,
                    MAX(Orange) max_Orange,
                    MAX(Purple) max_Purple
            FROM    Colors
            GROUP   BY Username
        ) b ON a.ID = b.Min_ID 
SET     a.Red = b.max_Red,
        a.Green = b.max_Green,
        a.Yellow = b.max_Yellow,
        a.Blue = b.max_Blue,
        a.Orange = b.max_Orange,
        a.Purple = b.max_Purple

Dan kunt u nu de records verwijderen,

DELETE  a
FROM    Colors a
        LEFT JOIN
        (
            SELECT  MIN(ID) min_ID,
                    Username
            FROM    Colors
            GROUP   BY Username
        ) b ON a.ID = b.Min_ID 
WHERE   b.Min_ID  IS NULL


  1. Wat is de beste manier om een ​​datetime-veld te vergelijken met datumvelden?

  2. Hoe kan ik gegevens invoegen in een MySQL-database?

  3. Gebruikersaccountbeheer, rollen, machtigingen, authenticatie PHP en MySQL - Deel 4

  4. SSMS versie 18 – geen databasediagrammen