sql >> Databáze >  >> RDS >> Mysql

MySQL konsoliduje duplicitní datové záznamy pomocí UPDATE / DELETE

Toto je pouze projekce. Neaktualizuje tabulku ani neodstraní některá 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

AKTUALIZACE

pokud opravdu chcete odstranit tyto záznamy, musíte nejprve spustit příkaz UPDATE, než budete moci záznamy odstranit

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

Poté můžete nyní záznamy odstranit,

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. Mohu vytvořit globální funkci v SQL Server?

  2. Proč SQL Server 2008 blokuje SELECT na dlouhých transakcích INSERT?

  3. Získání správného času z data Oracle v Solr DataImportHandler

  4. SQL dotaz „LIKE“ s použitím „%“, kde vyhledávací kritéria obsahují „%“