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

SQL Update Overordnet tabelfelt baseret på flere underordnede tabelrækker

update parent
set longtext =
    stuff((
    select ',' + c.char + ': ' + c.val
    from child c
    where c.uid = parent.uid
    for xml path(''), type).value('.','nvarchar(max)'),1,1,'');

Jeg har opdateret din SQLFiddle med løsningen.

  1. STUFF() funktion for at fjerne den indledende ',' (komma) fra den første karakteristik.

  2. FOR XML at oprette et XML-dokument ud fra et forespørgselsresultat. Dette er et velkendt trick med SQL Server - fordi kolonnen ikke er navngivet, er der intet element produceret, og kun den rå tekst (af hver række) udlæses, maset sammen til en enkelt række.

Meget få artikler på internettet forsøger at forklare det i detaljer, da koden stort set er efterladt som en forklaring i sig selv.




  1. Lås for SELECT, så en anden proces ikke får gamle data

  2. SQL Unit Testing Stored Procedures

  3. SSIS 64 bit vs 32 bit

  4. PHP Mysql PDO:Generel fejl:2006 MySQL-serveren er forsvundet