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,'');
Tôi đã cập nhật SQLFiddle của bạn với giải pháp.
-
STUFF () chức năng loại bỏ
','
hàng đầu (dấu phẩy) từ đặc điểm đầu tiên. -
ĐỐI VỚI XML để tạo tài liệu XML từ kết quả truy vấn. Đây là một thủ thuật nổi tiếng với SQL Server - vì cột không được đặt tên, không có phần tử nào được tạo ra và chỉ xuất văn bản thô (của mỗi hàng), được trộn với nhau thành một hàng duy nhất.
Rất ít bài báo trên internet cố gắng giải thích nó một cách chi tiết, vì đoạn mã này chỉ được xem như một lời giải thích.