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字符串的形式返回结果,在本例中,该字符串就是您想要的字符串。