sql >> Databáze >  >> RDS >> Sqlserver

SQL Aktualizace nadřazeného pole tabulky na základě více podřízených řádků tabulky

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,'');

Aktualizoval jsem váš SQLFiddle s řešením.

  1. STUFF() funkce k odstranění úvodního ',' (čárka) od první charakteristiky.

  2. PRO XML k vytvoření dokumentu XML z výsledku dotazu. Toto je dobře známý trik s SQL Serverem - protože sloupec není pojmenován, nevytváří se žádný prvek a na výstup je pouze surový text (každého řádku) smíchaný do jednoho řádku.

Velmi málo článků na internetu se to pokouší podrobně vysvětlit, protože kód je do značné míry ponechán jako vysvětlení sám o sobě.




  1. Objednat SQL podle nejsilnějšího LIKE?

  2. Optimalizace kódu v PL/SQL. Udělat to do pořádku. Kód běží, ale není správný

  3. SQLite - Pusťte tabulku

  4. MySQL:výsledek s více řádky oproti výsledku s jedním řádkem