嘿,我只是想知道以下是否可能
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
答案 0 :(得分:1)
您想使用FOR XML PATH
construct:
select
ID,
Name,
stuff((select ', ' + Name
from secondTable where companyId = tableOne.id
for xml path('')),
1,2,'') [Names]
from tableOne
STUFF
函数用于删除最后附加的', '
。
您还可以在此处查看其他示例:
答案 1 :(得分: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,安倍的回答会更有意义。
如果您希望在select返回多列的情况下对其进行聚合,则可以使用GROUP BY t1.id,t1.name。