Ho una tabella con un indice univoco non cluster e 4 delle colonne sono elencate in questo indice. Voglio aggiornare un numero elevato di righe nella tabella. Se lo faccio, non saranno più distinti, quindi l'aggiornamento fallirà a causa dell'indice.Eliminazione di righe non distinte
Desidero disattivare l'indice e quindi eliminare le righe duplicate meno recenti. Ecco la mia domanda finora:
SELECT t.itemid, t.fieldid, t.version, updated
FROM dbo.VersionedFields w
inner JOIN
(
SELECT itemid, fieldid, version, COUNT(*) AS QTY
FROM dbo.VersionedFields
GROUP BY itemid, fieldid, version
HAVING COUNT(*) > 1
) t
on w.itemid = t.itemid and w.fieldid = t.fieldid and w.version = t.version
Il selezionare all'interno della inner join restituisce il giusto numero di record che si desidera eliminare, ma i gruppi in modo v'è in realtà il doppio della quantità.
Dopo l'unione mostra tutti i record ma tutti quelli che voglio eliminare sono quelli più vecchi?
Come si può fare?
La soluzione di marc_s è un modo elegante per farlo. – rorycl