sql >> Base de Datos >  >> RDS >> Sqlserver

Mensaje 8672, Nivel 16, Estado 1, Línea 1 La instrucción MERGE intentó ACTUALIZAR o ELIMINAR la misma fila más de una vez

Esto sucede cuando una fila de destino coincide con más de una fila de origen.
Una instrucción MERGE no puede ACTUALIZAR/ELIMINAR la misma fila de la tabla de destino varias veces.

Creo que el error se explica por sí mismo.

Tiene filas duplicadas en la tabla de origen. Entonces, para una fila con Rownumber = X en Rows tabla hay más de una fila con Rowno = X en Temp_info mesa.

El servidor SQL quisiera saber qué fila de esas filas duplicadas en la tabla de origen usar para la actualización en una fila de la tabla de destino.

[Editar]

En respuesta a su respuesta:una de las opciones es duplicar, antes de ejecutar la combinación:

with cte
as
(
    select row_number() over(partition by RowNo order by DOB desc) RowNumber
    from Temp_info
)
delete cte
where RowNumber > 1

Usé DOB como el campo que define el orden para saber cuál es el último. Reemplace este campo con el que desea que se use para el pedido.