sql >> Database >  >> RDS >> Mysql

Verwijder dubbele rijen uit tabel met join

Als u dubbele stad met dezelfde state_id . wilt verwijderen (records dupliceren), u kunt dat doen door ze te groeperen op city en state_id en gebruik MIN of MAX functie:

Voor de verwijderquery zag je tabel er zo uit

| 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 |

U kunt de volgende query gebruiken om dubbele records te verwijderen:

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;

Na het toepassen van de bovenstaande zoekopdracht ziet uw tabel er als volgt uit:

| 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 |

Bekijk deze SQLFiddle

Zie voor meer informatie DELETE Syntaxis van MySQL.



  1. kan handelsmerksymbool niet weergeven in mysql naar html

  2. SQL herstellen vanuit meerdere SQL-bestanden

  3. Mysql, selecteer id's gegroepeerd per aparte kolom (selecteer alle id's voor elk uniek domein)

  4. Een menu maken in SQLPlus of PL/SQL