Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Актуализиране на родителско поле на таблица въз основа на множество дъщерни редове на таблица

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

Актуализирах вашия SQLFiddle с решението.

  1. STUFF() функция за премахване на водещите ',' (запетая) от първата характеристика.

  2. ЗА XML за създаване на XML документ от резултат от заявка. Това е добре известен трик с SQL Server - тъй като колоната не е наименувана, няма произведен елемент и се извежда само необработеният текст (на всеки ред), смесен заедно в един ред.

Много малко статии в интернет се опитват да го обяснят в детайли, тъй като кодът до голяма степен е оставен като обяснение сам по себе си.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. прикачената база данни е само за четене

  2. DECRYPTBYASYMKEY() Не връща очаквана стойност

  3. Какво е SQL Server?

  4. ALTER TABLE DROP COLUMN не успя, защото един или повече обекти имат достъп до тази колона

  5. SET DATEFIRST – Задайте първия ден от седмицата в SQL Server