sql >> Database teknologi >  >> RDS >> Sqlserver

Msg 8672, Level 16, State 1, Line 1 MERGE-sætningen forsøgte at OPDATERE eller SLETTE den samme række mere end én gang

Dette sker, når en målrække matcher mere end én kilderække.
En MERGE-sætning kan ikke OPDATERE/SLETTE den samme række i måltabellen flere gange.

Fejlen er ret selvforklarende, synes jeg.

Du har dublerede rækker i kildetabellen. Altså for en række med Rownumber = X i Rows tabel er der mere end én række med Rowno = X i Temp_info tabel.

SQL-serveren vil gerne vide, hvilken række fra disse duplikerede rækker i kildetabellen, der skal bruges til opdateringen på én række i måltabellen.

[Rediger]

Som svar på dit svar:en af ​​mulighederne er at duplikere, før du kører sammenfletningen:

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

Jeg brugte DOB som det felt, der definerer orden for at vide, hvad der er det sidste. Erstat dette felt med det, du ønsker skal bruges til bestilling.




  1. Bedre samtidighed i Oracle end SQL Server?

  2. Undersøger en ORA 028513 DG4ODBC-fejl

  3. Sådan fungerer OBJECTPROPERTYEX() i SQL Server

  4. SQL-serverlogforsendelse og installation og konfiguration -4