Con più domande
Record doppi

Domanda
-
Tutte le risposte
-
-
Ciao AT160340,
sempre su questo forum si è discusso già di un problema simile su
questo thread: Eliminazione record doppi.
Leggilo in caso possa aiutarti!
CiaoPaolo Pranzo
-
Non ho trovato sul thread che mi hai segnalato alcuna soluzione valida
Ho trovato poi altrove il comando seguente che mi ha risolto il problema
DELETE T1 FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY NomeChiave ORDER BY [NomeChiave]) AS [RowNumber] , NomeChiave FROM NomeTabella) AS T1 WHERE(RowNumber > 1)
-
Non ho trovato sul thread che mi hai segnalato alcuna soluzione valida
Ho trovato poi altrove il comando seguente che mi ha risolto il problema
DELETE T1 FROM ( SELECT ROW_NUMBER() OVER(PARTITION BY NomeChiave ORDER BY [NomeChiave]) AS [RowNumber] , NomeChiave FROM NomeTabella) AS T1 WHERE(RowNumber > 1)
Ciao.
Ho letto questo thread per curiosità e sono d'accordo con Mario Formosa quando dice che la cancellazione di record è un'operazione potenzialmente pericolosa. Il che, tradotto in parole più semplici, significa che se sai quello che fai fallo pure ma prima di farlo fatti almeno un backup del DB.
Di più, potrebbe anche fallire se vi sono vincoli di integrità attivi.
Ho letto il thread segnalato da Paolo Pranzo e devo dire, ad onor del vero, che non è esatto quanto da te affermato, cioè che non hai trovato in esso una soluzione valida.
La soluzione che hai postato tu, infatti, sta proprio in quel thread ed è stata data da Alessandro Alpi quando cita il partizionamento per elemento (o elementi, aggiungo io) raggruppante.
E, guarda caso, nell'esempio scritto viene usata proprio la funzione ROW_NUMBER.
Quello che mi sento di aggiungere è che ROW_NUMBER è una funzione introdotta, se non sbaglio, con SQL Server 2005.
Questa soluzione, pertanto, non è la più generale possibile.
vibi6