我有这种格式的表值
sam
jack
sam
john
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
我怎样才能获得独特的价值
sam,jack,john
像这样。
我有这种格式的表值
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
语法返回一个连接的字符串。对 SO 的搜索会返回多个结果,您可以将其用作示例。
干得好
Declare @name varchar(max)
select
@name = COALESCE(@name + ', ','')+name from (select distinct user_email
from
PostedCommentMaster) as t
where
article_id = @id
您可以使用group by
唯一值。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from PostedCommentMaster where article_id = @id
group by user_email
最好你可以使用这个。
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email from (select distinct user_email
from PostedCommentMaster where article_id = @id ) as tblTemp
SELECT distinct @name = COALESCE(@name + ', ','')+ user_email from PostedCommentMaster where article_id = @id
我被困在同样的问题上。所以我对此的解决方案是——
添加您的合并查询。
create table #emailList (user_email varchar(200))
insert into #emailList select distinct user_email from PostedCommentMaster
where article_id = @id
Declare @name varchar(max)
select @name = COALESCE(@name + ', ','')+ user_email
from #emailList
这也有助于使用连接从多个表中获取数据。