SQL在单个值中连接字符串

SQL在单个值中连接字符串,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我有两个表,users\u tbl和imagestbl 每个用户可以有多个图像 我正在尝试选择所有用户并将用户图像连接到一行中 例如: 用户待定 user_id user_name -------------------- 1 david 2 tarik image_id user_id image_url ------------------------------- 1 1 "image 12312 u

我有两个表,
users\u tbl
images
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"
图像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"
我需要返回以下结果的select语句:

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中使用此链接的结果

,您将使用
作为xml路径

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;

可能的副本。在更高版本中使用XML路径方法pre SQL 2017和STRING_AGG。这看起来并没有提供每个用户一行的所需逗号分隔列表。我忘了添加最后一位。对不起,我的不好。如何在字符串末尾添加逗号呢?像这样的“我的图像url,我的图像url 2”@TarikHusin
for xml path
以xml字符串的形式返回结果,在本例中,该字符串就是您想要的字符串。