日期:2014-05-19  浏览次数:20554 次

重复项过滤 + 排序
现在有一个表:
name           id
第一           1
第一           2
第一           3
第二           4
第三           5
  现在想得到:
name
第一
第二
第三

要升序排列的,该怎么办啊~

直接用select   DISTINCT   name   from   table   order   by   name   asc出现:

name
第二
第三
第一

------解决方案--------------------
select name from table group by name order by id desc
------解决方案--------------------
create table T(name varchar(10), id int)
insert T select '第一 ', 1
union all select '第一 ', 2
union all select '第一 ', 3
union all select '第二 ', 4
union all select '第三 ', 5

select name
from T
group by name
order by min(id)

--result
name
----------
第一
第二
第三

(3 row(s) affected)
------解决方案--------------------
2楼牛哈,呵呵
------解决方案--------------------

向 marco08(天道酬勤) 學習

------解决方案--------------------
建表:
IF EXISTS(SELECT *FROM SYSOBJECTS WHERE NAME= 'temptab 'AND XTYPE= 'U ')
DROP TABLE temptab
create table temptab
(
pname varchar(20),
pid int
)

插入数据:
insert into temptab values( '第一 ',1)
insert into temptab values( '第一 ',2)
insert into temptab values( '第一 ',3)
insert into temptab values( '第三 ',4)
insert into temptab values( '第二 ',5)

要求的查询
select pname from
(select pname,
case pname
when '第一 ' then 1
when '第二 ' then 2
when '第三 ' then 3
end Porder
from temptab group by pname)tt
order by Porder

该方法使用CASE语句,针对你要求的排序方式自己定义顺序,按定义的排序字段(Porder)来排序。