Vedere la seguente domanda: Deleting duplicate rows from a table.
La risposta accettata adattato da lì (che è la mia risposta, in modo che nessun "furto" qui ...):
Si può fare in modo semplice a patto di avere un campo ID univoco: è possibile eliminare tutti i record che sono gli stessi ad eccezione dell'ID, ma non hanno "l'ID minimo" per il loro nome.
interrogazione Esempio:
DELETE FROM members
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM members
GROUP BY name
)
Nel caso in cui non si dispone di un indice univoco, la mia raccomandazione è quella di aggiungere semplicemente un indice univoco auto-incrementale. Principalmente perché è un buon design, ma anche perché ti permetterà di eseguire la query sopra.
fonte
2009-08-17 09:01:09
Ecco come ho capito quanto segue: Per ogni nome, li raggruppa (solo uno se è univoco, diversi in uno se duplicati), seleziona l'ID più piccolo dal set e quindi elimina qualsiasi riga il cui ID non esiste nella tabella . Fantastico :) Grazie mille Rax. – Gulbahar
Hai capito esattamente :) –
in mysql ottengo il seguente errore quando invio questa query: "" errore 1093 (HY000) ma dà un errore "Non puoi specificare i" membri "della tabella di destinazione per l'aggiornamento nella clausola FROM" "qualsiasi idea ? –