重复项过滤 + 排序
现在有一个表:
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)来排序。