SQL将字符串连接为单个值

时间:2019-05-26 12:44:35

标签: sql sql-server sql-server-2012

我有两个表users_tblimages tbl。

每个用户可以拥有多个图像。

我试图选择所有用户并将用户图像连接到一行

示例:

用户 tbl

user_id    user_name
--------------------
 1          david
 2          tarik

图片 tbl

image_id   user_id   image_url 
-------------------------------
1            1      "image 12312 url"
2            1      "image 123 url"
3            1      "image 313 url"
4            1      "image 212 url"
5            2      "my image url"
5            2      "my image url2"

我需要一条返回以下结果的选择语句:

user_id   image_url 
----------------------------------------------------------------------
    1     "image 12312 url ,image 123 url,image 313 url,image 212 url"
    2     "my image url , my image url2"

2 个答案:

答案 0 :(得分:1)

在SQL Server 2012中,您将使用for xml path

select u.*,
       stuff( (select ', ' + i.image_url
               from images i
               where i.user_id = u.user_id
               for xml path ('')
              ), 1, 2, ''
            ) as image_urls
from users u;

编辑:

如果您希望逗号结尾,请省略stuff()并使用:

select u.*,
       (select i.image_url + ', '
        from images i
        where i.user_id = u.user_id
        for xml path ('')
       ) as image_urls
from users u;

答案 1 :(得分:0)

SELECT [users].[user_id], [images].[image_url]
FROM [images]
INNER JOIN [users] ON
    [users].[user_id] = [images].[user_id]

然后使用此结果链接here.