我正在使用SQL Server2017。我有一个包含parentId
和许多childId
的映射表。所有ID与父表的映射。我想从映射表childId中查询,并在针对parentId的行中使用逗号分隔的值。
查询是
SELECT
(SELECT
CAST(b.ChildId as NVARCHAR(20)) + ','
FROM
[std].[FieldMapping] b
WHERE
b.ParentId = a.FieldId) AS Childs
FROM
[std].[Field] a
WHERE
a.FieldId = 2080
但是我得到一个错误:
子查询返回了多个值。当子查询遵循=,!=,<,<=,>,> =或将子查询用作 表达式。
如何获得所需的结果。
答案 0 :(得分:2)
尝试使用XML Path来实现。选中SQL Fiddle
SELECT a.name,
(SELECT
CAST(b.name as NVARCHAR(20)) + ','
FROM
child b
WHERE
b.Parent_Id = a.id
FOR XML PATH('')) AS Childs
FROM
parent a
WHERE
a.id = 1