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

Indstil hvilke rækker der skal slettes på mysql efter anvendelse af kombineret unikt indeks m/ignorer

I stedet for at prøve at slette det, du ikke har brug for, så prøv at tænke på det som et problem, hvor du vil vælge dem, du vil have, og ignorere resten; sådan:

CREATE TABLE `other_table` LIKE `part3`;
INSERT INTO `other_table`
SELECT `part3`.*
FROM (SELECT gtu, region, trait, pop, author, risk, MAX(zvalue) AS max_zval
    FROM `part3`
    GROUP BY gtu, region, trait, pop, author, risk
) `tmp`
INNER JOIN `part3` USING (gtu, region, trait, pop, author, risk)
WHERE `part3`.zvalue = `tmp`.max_zval;

Det skulle skabe en tabel other_table der opfylder den unikke begrænsning i dine data; kun rækkerne med den højeste zvalue beholdes, de andre fjernes (springes over).




  1. Sådan viser du tabel fremmednøgler

  2. MySQL GROUP BY og COUNT

  3. Hvad er primær nøglebegrænsning i SQL Server-database - SQL Server / T-SQL vejledning del 54

  4. Giv brugertilladelser til alle nye tabeller oprettet i postgresql