SQL服务器有一个选择查询作为一个选择栏
问题描述:
嘿我只是想知道的部分,如果下面是可能SQL服务器有一个选择查询作为一个选择栏
select id, name, (select name from secondTable where companyId = tableOne.id) as concatenatedString..
from tableOne
所以我要寻找的选择做的是在tableOne每个记录回报,在另一个表中执行查找并返回此记录ID的所有值。 (另一个表是查找表,所以每个ID可能有1个或更多的条目)。如果在子查询中返回多个值以构建单个字符串值(用逗号分隔)。
这样即返回的数据会看起来像
1 Microsoft Bill,Gate,Jack
2 Apple Jobs
答
我不知道为什么你想跳过的加入,因为它会令你的查询更加灵活。如果你热衷于使用子选择,你可以让你的子选择表做到这一点:
当然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。
如果您希望汇总select以防它返回多个列,则可以使用GROUP BY t1.id,t1.name。
答
你想用FOR XML PATH
结构:
select
ID,
Name,
stuff((select ', ' + Name
from secondTable where companyId = tableOne.id
for xml path('')),
1,2,'') [Names]
from tableOne
的STUFF
功能是摆脱最终', '
这将在年底追加的。
您还可以在这里看到另一个例子:
OP要显示 “第三列” 作为一个逗号分隔值的字符串。每个公司都会有多条生产线,员工数量也是如此 –