View Full Version : [SQL] Aiuto per query
Dovrei effettuare una query sql di Delete che mi vada a cercare tutti i campi dupplicati di una colonna e me li elimini in modo da avere campi unici.. come se pò fare?
Grazie :)
NapalM
anonimizzato
14-05-2005, 10:21
DELETE FROM tabella WHERE campo='valore' LIMIT 1
DELETE FROM tabella WHERE campo='valore' LIMIT 1
Però io non sò quel valore, nel senso io ho 10000 record.. devo cercare quelli dupplicati e poi eliminarli.. si può fare in una query unica?
NapalM
anonimizzato
14-05-2005, 10:43
Oddio non credo si possa fare così facilmente.
Devi sapere a priori che record vuoi cancellare in base ad un valore.
io in più passaggi farei una cosa del genere:
SELECT raggruppando i record per un certo campo (es: titolo film) scoprendo così quanti record hanno lo stesso titolo di film (duplicati da cancellare) e poi farei il DELETE su questi titoli ad un ad uno limitando ad 1 le cancellazioni (LIMIT 1).
Non conosco perfettamente l'SQL quindi magari c'è un metodo assai più veloce.
Il consiglio è di chiedere anche qui: http://forum.html.it/forum/forumdisplay.php?forumid=39
anonimizzato
14-05-2005, 11:01
altrimenti puoi fare così:
ALTER IGNORE TABLE tabella ADD UNIQUE KEY(campo);
in questo modo il DBMS aggiunge alla colonna 'campo' un indice univoco ignorando (di fatto eliminando) i valori doppi.
Spero di esserti stato utile ciao!
Mi dà questo errore sulla query [ ALTER IGNORE TABLE NEWS ADD UNIQUE KEY(TESTO) ]
Server: messaggio 170, livello 15, stato 1, riga 1
Riga 1: sintassi non corretta in prossimità di 'IGNORE'.
Grazie x l'aiuto :)
NapalM
Mmmm... potresti provare ad estrarre tutti gli elementi "diversi" tra di loro, e poi fare un JOIN con la vecchia tabella, in maniera da eliminare i duplicati! Una cosa tipo (perdonate la sintassi SQL arrugginita):
SELECT * FROM
((SELECT DISTINCT (campo) FROM tabella) AS A
JOIN
tabella AS B
WHERE A.campo=B.campo)
Spero chi si capisca il ragionamento... :D
beppegrillo
14-05-2005, 14:46
Mmmm... potresti provare ad estrarre tutti gli elementi "diversi" tra di loro, e poi fare un JOIN con la vecchia tabella, in maniera da eliminare i duplicati! Una cosa tipo (perdonate la sintassi SQL arrugginita):
SELECT * FROM
((SELECT DISTINCT (campo) FROM tabella) AS A
JOIN
tabella AS B
WHERE A.campo=B.campo)
Spero chi si capisca il ragionamento... :D
Questo lo puoi fare se sono supportare le subquery :)
Che dbms usi napalm?
SQL server 2000... grazie a tutti per il supporto :)
NapalM
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.