日期:2014-05-16  浏览次数:20874 次

sql 中distinct 用法求解答
本帖最后由 he_victory 于 2014-03-18 14:36:11 编辑
本人今天遇到一个想不明白的问题,关于sql 中 Distinct 去重复关键字的问题
看下面实例

--测试数据
create table tb2
(
name varchar(50)
)

insert into tb2 select 'aa';
insert into tb2 select 'bb';
insert into tb2 select 'aa';
insert into tb2 select 'cc';
insert into tb2 select 'dd';
-- 正常去重复语句
select distinct name from tb2;
/*
----------
name
aa
bb
cc
dd
----------
*/

select distinct ','+name from tb2;
/*
-------------
,aa
,bb
,cc
,dd
-------------
*/

--本人现在更具需求想获取一个列表所以按照下面的写了但是结果很让人不解--求解答
declare @List nvarchar(600);
set @List='';
select distinct @List=@List+','+name
from tb2 
print @List;

/*
-----------
,dd
-----------
*/



最后的那个语句让我很不明白求解答
------解决方案--------------------

declare @List nvarchar(600);
set @List='';
select @List=@List+','+a.name
from (select distinct name from tb2) a
print @List;

/*
,aa,bb,cc,dd
*/

------解决方案--------------------
改成这样试试:

--测试数据
create table tb2
(
name varchar(50)
)

insert into tb2 select 'aa';
insert into tb2 select 'bb';
insert into tb2 select 'aa';
insert into tb2 select 'cc';
insert into tb2 select 'dd';
go


declare @List nvarchar(600);
set @List='';
select @List=@List+','+name
from tb2 
group by name

select @List
/*
,aa,bb,cc,dd
*/