SQL 在单个值中连接字符串



我有两个表,users_tblimages tbl。

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

我正在尝试选择所有用户并将用户图像连接在一行中

例:

用户 tbl

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

图片待定

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"

在 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;

最新更新