sql – 如何在COALESCE()中获取不同的值

我有这种格式的表值
sam
jack
sam
john

Declare @name varchar(max)
select @name = COALESCE(@name + ',','')+ user_email 
from   PostedCommentMaster where article_id = @id

我怎样才能获得不同的价值

sam,jack,john

像这样.

解决方法

您可以将select语句包装到子选择中并对结果应用合并.
Declare @name varchar(max) 

select @name = COALESCE(@name + ','') + user_email 
from   (select distinct user_email 
        from   PostedCommentMaster 
        where article_id = @id) pc

请注意,这使用sql Server的未记录功能将结果连接成一个字符串.虽然我找不到它的链接,但我记得读到你不应该依赖这种行为.

更好的选择是使用FOR XML语法返回连接字符串. A search on SO返回可以用作示例的多个结果.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...