1

嘿,我只是想知道以下是否可能

select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString..
from tableOne

所以我正在寻找的选择是针对 tableOne 中的每条记录返回,在另一个表中执行查找并返回此记录 id 的所有值。(另一个表是查找表,因此每个 id 可能有 1 个或多个条目)。如果在子查询中返回超过 1 个值以构建单个字符串值,以逗号分隔。

所以即返回数据看起来像

1  Microsoft Bill,Gate,Jack
2  Apple     Jobs
4

2 回答 2

1

你想使用FOR XML PATH构造:

select 
    ID, 
    Name,
    stuff((select ', ' + Name
           from secondTable where companyId = tableOne.id 
           for xml path('')),
          1,2,'') [Names]
from tableOne

STUFF功能是去掉最后', '附加的final。

您还可以在此处查看其他示例:

于 2011-08-29T15:59:24.387 回答
0

我不确定您为什么要跳过联接,因为它会使您的查询更加灵活。如果您热衷于使用子选择,您可以通过使您的子选择表来做到这一点:

SELECT t1.id, t1.name, t2.name
FROM   tableOne t1
INNER JOIN (select id, name from secondTable) AS t2
on t1.id = t2.id

当然,如果您所做的只是加入 ID,那么 Abe 的回答会更有意义。

如果您想在 select 上聚合以防它返回多个列,您可以使用 GROUP BY t1.id, t1.name。

于 2011-08-29T15:58:56.883 回答