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

Campo de tabla principal de actualización de SQL basado en varias filas de tabla secundaria

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

He actualizado su SQLFiddle con la solución.

  1. STUFF() función para eliminar el ',' inicial (coma) de la primera característica.

  2. PARA XML para crear un documento XML a partir de un resultado de consulta. Este es un truco bien conocido con SQL Server:debido a que la columna no tiene nombre, no se produce ningún elemento y solo se genera el texto sin procesar (de cada fila), combinado en una sola fila.

Muy pocos artículos en Internet intentan explicarlo en detalle, ya que el código se deja prácticamente como una explicación en sí mismo.