我需要在单个查询中连接表并将输出作为单个数组获取,即使用户有多个地址
我的查询:
SELECT user.name, address.address, user.place
FROM user
LEFT JOIN address
WHERE user.user_id = address.user_id
GROUP BY user.name, address.address, user.place
假设用户有多个地址我当前正在输出为两行。有没有办法使用单个查询收集单个数组中的所有输出值。
请帮忙。
答案 0 :(得分:2)
您可以在查询中使用group_concat
。
SELECT user.name, group_concat(address.address) as 'address', user.place
FROM user
LEFT JOIN address
WHERE user.user_id = address.user_id
答案 1 :(得分:1)
另一种方法是使用FOR XML语句:
SELECT DISTINCT
u.name,
STUFF((SELECT ';' + a.[address]
FROM address a
WHERE u.[user_id] = a.[user_id]
FOR XML PATH('')),1,1,'') as [address],
u.place
FROM [user] u
输出将如下:
name address place
Mike adr1;adr2;adr3 someplace
答案 2 :(得分:1)
尝试 FOR XML PATH('') ,它会将您的地址加入一行:
select
[user].[name],
(select [address] + ', '
from [address]
where
[user_id] = [user].[user_id]
for xml path('')),
user.place
from [user]