sql >> Database >  >> RDS >> Mysql

Stel in welke rijen op mysql moeten worden verwijderd na het toepassen van een gecombineerde unieke index w/ignore

In plaats van te proberen te verwijderen wat je niet nodig hebt, probeer het te zien als een probleem waarbij je degene wilt kiezen die je wilt en de rest negeert; zoals zo:

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;

Dat zou een tabel other_table moeten maken die voldoet aan de unieke beperking in uw gegevens; alleen de rijen met de hoogste zvalue worden bewaard, de andere worden verwijderd (overgeslagen).




  1. Logstash INPUT MySQL

  2. Hoe implementeer je gapless, gebruiksvriendelijke ID's in NHibernate?

  3. Hoe mysql-tabellen in php . te vergrendelen

  4. hoe u precies gegevens kunt vinden tussen het geselecteerde diagonale gebied in mysql-query