在单个查询中将结果作为单个数组获取

时间:2016-06-08 07:32:01

标签: php sql sql-server join

我需要在单个查询中连接表并将输出作为单个数组获取,即使用户有多个地址

我的查询:

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

假设用户有多个地址我当前正在输出为两行。有没有办法使用单个查询收集单个数组中的所有输出值。

请帮忙。

3 个答案:

答案 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]