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

Eliminazione di righe duplicate da una tabella

Sì, supponendo che tu abbia un campo ID univoco, puoi eliminare tutti i record che sono uguali tranne l'ID, ma non hanno "l'ID minimo" per il loro gruppo di valori.

Esempio di query:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Note:

  • Ho scelto liberamente "Table" e "ID" come nomi rappresentativi
  • L'elenco dei campi ("Campo1, Campo2, ...") deve includere tutti i campi tranne l'ID
  • Questa potrebbe essere una query lenta a seconda del numero di campi e righe, tuttavia mi aspetto che vada bene rispetto alle alternative

EDIT:nel caso in cui non si disponga di un indice univoco, la mia raccomandazione è semplicemente aggiungere un indice univoco autoincrementale. Principalmente perché è un buon design, ma anche perché ti permetterà di eseguire la query sopra.