sql >> Databasteknik >  >> RDS >> Mysql

Ställ in vilka rader som ska raderas på mysql efter att ha tillämpat kombinerat unikt index w/ignore

Istället för att försöka ta bort det du inte behöver, försök att se det som ett problem där du vill välja de du vill ha och ignorera resten; som så:

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 borde skapa en tabell other_table som uppfyller den unika begränsningen i dina data; endast raderna med det högsta zvalue behålls, de andra tas bort (hoppas över).




  1. Oracle:Hur anropar man en överbelastad procedur?

  2. Hur kontrollerar jag om aktivera/inaktivera nycklar?

  3. Användardefinierad PostgreSQL-funktion i vilolägesdialekt ger undantag

  4. Ta bort efterföljande decimal noll