Ho un DB SQLite in cui la dichiarazione:come posso eliminare i duplicati in SQLite?
SELECT messdatum, count(*) as anzahl
from lipo
GROUP BY Messdatum
ORDER BY anzahl desc;
risultati in alcune linee, il che indica che ho alcuni duplicati con lo stesso Messdatum
. Come posso eliminare i duplicati solo dal mio sqlite db? (Dovrebbe cancellare i record anzahl-1 in cui il messdatum è lo stesso?) Qualcuno ha un consiglio?
PS: Ho trovato questo collegamento How to remove duplicate from Microsoft ma ho problemi con il dialetto sqlite. Ho alcuni errori dovuti alla sintassi sqlite. Quindi f.e. Potrei fare:
INSERT into holdkey SELECT messdatum, count(*) as anzahl from lipo group by messdatum having count(*) > 1;
INSERT into holddups SELECT DISTINCT lipo.* from lipo, holdkey where lipo.Messdatum = holdkey.messdatum ;
DELETE lipo from lipo, holdkey where lipo.messdatum = holdkey.messdatum;
qui è un errore nel comando di cancellazione. Come lo posso fare? Ho provato ad aggiornare il holdkey.anzahl a un ulteriore col in lipo con
UPDATE lipo,holdkey set lipo.duplettenzahl = holdkey.anzahl WHERE lipo.messdatum = holdkey.messdatum ;
ma anche questo non è possibile. Se avessi l'anzahl come dublettenzahl a lipo, potrei cancellare tutti i record da lipo dove dublettenzahl> 0. Per favore aiuto! Grazie
Grazie mille! Grande! Potrei farlo anche in MySQL, vedi sotto la mia risposta. –
Sfortunatamente la tua soluzione intelligente non funziona in MySQL (ma funziona perfettamente in SQLlite!) (Anche quando ho una riga PZEILE con un numero intero univoco nel mio DB MYSQL) ho ricevuto l'errore: [Err] 1093 - Non puoi specificare la tabella di destinazione 'lipo' per l'aggiornamento nella clausola FROM –
Bene, la domanda fa riferimento solo a SQLite :-) Penso che sia probabilmente meglio porre di nuovo la domanda, ma riferendoci a MySQL in questo momento - la maggior parte dei database SQL ha le proprie variazioni idiosincratiche su " standard "SQL, sfortunatamente. –