簡體   English   中英

在單個查詢中將結果作為單個數組獲取

[英]Fetch result as single array in single query

我需要連接表並在單個查詢中將輸出作為單個數組獲取,即使用戶有多個地址

我的查詢:

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

假設一個用戶有多個地址當前正在作為兩行輸出,是否有任何方法可以使用單個查詢將所有輸出值收集到單個數組中。

請幫忙。

您可以在查詢中使用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

另一種方法是使用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

嘗試FOR XML PATH('') ,它將把您的地址加入一行:

select
    [user].[name],
    (select [address] + ', '
    from [address]
    where
        [user_id] = [user].[user_id]
    for xml path('')),
    user.place
from [user]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM