sql >> Databáze >  >> RDS >> Mysql

Odstraňte duplicitní řádky z tabulky pomocí spojení

Pokud chcete odstranit duplicitní město se stejným state_id (duplicitní záznamy), můžete to udělat jejich seskupením podle city a state_id a pomocí MIN nebo MAX funkce:

Před mazacím dotazem vaše tabulka vypadala jako

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

K odstranění duplicitních záznamů můžete použít následující dotaz:

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;

Po použití výše uvedeného dotazu bude vaše tabulka vypadat takto:

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

Zobrazit tento SQLFiddle

Více viz DELETE Syntaxe MySQL.



  1. Zkontrolujte verzi SQLite

  2. Tipy pro používání SQL Serveru se Salesforce

  3. Převést objekt na řetězec v PHP

  4. Dotaz Mysql vrací místo požadované hodnoty ID zdroje #8