Tengo una tabla que tiene un índice único no agrupado y 4 de las columnas se enumeran en este índice. Quiero actualizar una gran cantidad de filas en la tabla. Si lo hago, ya no serán distintos, por lo tanto, la actualización falla debido al índice.Supresión de filas no distintas
Quiero deshabilitar el índice y luego eliminar las filas duplicadas más antiguas. Aquí está mi consulta hasta el momento:
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
El selecto dentro de la unión interna devuelve el número correcto de registros que se quieren eliminar, pero los agrupa por lo que no es en realidad el doble de la cantidad.
Después de la unión, muestra todos los registros pero todo lo que quiero eliminar son los más antiguos?
¿Cómo se puede hacer esto?
La solución de marc_s es una manera elegante de hacerlo. – rorycl