sql >> Database teknologi >  >> RDS >> Mysql

MySQL konsoliderer duplikerede dataposter via OPDATERING / SLET

Dette er kun en projektion. Det opdaterer ikke tabellen eller sletter nogle 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

OPDATERING

hvis du virkelig ønsker at slette disse poster, skal du køre UPDATE-sætningen først, før du kan slette posterne

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

Så kan du nu slette posterne,

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. Lagring af svenske tegn i mysql database

  2. Sådan udskiftes en mellemliggende MySQL- eller MariaDB-master med en Binlog-server ved hjælp af MaxScale

  3. hvordan man beregner prævalens ved hjælp af sql-kode

  4. MYSQL:Flet to tabeller til én, med union