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

Fjern duplikerede rækker fra tabel med join

Hvis du vil fjerne dublet by med samme state_id (duplikerede poster), du kan gøre det ved at gruppere dem efter city og state_id og ved at bruge MIN eller MAX funktion:

Før sletning af forespørgslen så din tabel ud som

| ID | STATE_ID | CITY | ------------------------------ | 1 | 1 | city_one | | 2 | 1 | city_two | | 3 | 1 | city_one | | 4 | 1 | city_two | | 5 | 2 | city_one | | 6 | 3 | city_three | | 7 | 3 | city_one | | 8 | 3 | city_three | | 9 | 4 | city_four | | 10 | 4 | city_five |

Du kan bruge følgende forespørgsel til at fjerne duplikerede poster:

DELETE city_table 
  FROM city_table
  LEFT JOIN 
  (SELECT MIN(id) AS IDs FROM city_table
   GROUP BY city,state_id
  )A
  ON city_table.ID = A.IDs
  WHERE A.ids IS NULL;
 

Efter at have anvendt ovenstående forespørgsel vil din tabel se ud som:

| ID | STATE_ID | CITY | ------------------------------ | 1 | 1 | city_one | | 2 | 1 | city_two | | 5 | 2 | city_one | | 6 | 3 | city_three | | 7 | 3 | city_one | | 9 | 4 | city_four | | 10 | 4 | city_five |

Se denne SQLFiddle

For mere se DELETE Syntaks for MySQL.



  1. Spring, Hibernate, Blob doven loading

  2. Hvorfor forårsager denne MySQL-udløser et stackoverløb?

  3. Få adgang til en mysql-database fra ekstern vært/ip? (dvs.:mysql workbench)

  4. angivelse af klassesti for selvstændig jython