sql >> Databasteknik >  >> RDS >> Mysql

MySQL konsoliderar dubbletter av dataposter via UPPDATERA / DELETE

Detta är bara en projektion. Den uppdaterar inte tabellen och tar inte bort vissa data.

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

UPPDATERA

om du verkligen vill ta bort dessa poster måste du köra UPDATE-satsen först innan du kan radera posterna

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

Sedan kan du nu radera posterna,

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. MySQL CAST – Hur man skriver Cast i MySQL

  2. Komma igång med SQL Server 2017 på Linux i Azure-portalen

  3. Hur man lagrar historiska poster i en historiktabell i SQL Server

  4. Hur man avrundar siffror i databasen till två decimaler med en MySql-fråga