小编典典

如何在SQL Server中将多行合并为一列?

sql

我一直在寻找答案,但我无法弄清楚。我是SQL Server的新手,语法还不完善。我有这个数据结构(简化):

表“用户” | 表“标签”:
UserID用户名| TagID用户ID照片ID
1鲍勃| 1 1 1
2帐单| 2 2 1
3简| 3 3 1
4山姆| 4 2 2
-------------------------------------------------- ---
表“照片”:表“相册”:
PhotoID用户ID相册ID | 相册ID用户ID
1 1 1 | 1 1
2 1 1 | 2 3
3 1 1 | 3 2
4 3 2 |
5 3 2 |

我正在寻找一种方法来获取所有照片信息(简单)以及该照片的所有标签,就像CONCAT(username, ', ') AS Tags删除最后一个逗号一样。我正在花时间尝试这样做。我已经尝试了本文中的方法,但是在尝试运行查询时却出现错误,提示我无法使用DECLARE语句…你们知道如何做到这一点吗?我正在使用VS08以及安装了什么数据库(我通常使用MySQL,所以我不知道这到底是哪种DB的味道……这是一个.mdf文件?)


阅读 319

收藏
2021-03-17

共1个答案

小编典典

我将创建一个UDF:

create function GetTags(PhotoID int) returns @tags varchar(max)
as
begin
    declare @mytags varchar(max)
    set @mytags = ''

    select @mytags = @mytags + ', ' + tag from tags where photoid = @photoid

    return substring(@mytags, 3, 8000)
end

然后,您要做的就是:

select GetTags(photoID) as tagList from photos
2021-03-17