首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

第二次求一条解决思路

2012-03-18 
第二次求一条表Aidnamepaixshijianbiaoti1公司112007/5/20标题12公司112007/5/20标题23公司222007/5/20标

第二次求一条
表A
id                   name                   paix             shijian               biaoti
1                     公司1                     1               2007/5/20             标题1
2                     公司1                     1               2007/5/20             标题2
3                     公司2                     2               2007/5/20             标题3
4                     公司2                     2               2007/5/20             标题4
5                     公司3                     0               2007/5/20             标题5
6                     公司4                     0               2007/5/20             标题6
7                     公司5                     0               2007/5/20             标题7
意思是把公司2和公司1排到第一二位而且同一个公司只显示他的一条记录,其余的记录按id从大到小排序

哪位高手能给出一条sql语句???

[解决办法]
declare @a table(id int, name varchar(10), paix int, shijian smalldatetime, biaoti varchar(10))
insert @a select 1 , '公司1 ', 1 , '2007/5/20 ', '标题1 '
union all select 2 , '公司1 ', 1 , '2007/5/20 ', '标题2 '
union all select 3 , '公司2 ', 2 , '2007/5/20 ', '标题3 '
union all select 4 , '公司2 ', 2 , '2007/5/20 ', '标题4 '
union all select 5 , '公司3 ', 0 , '2007/5/20 ', '标题5 '
union all select 6 , '公司4 ', 0 , '2007/5/20 ', '标题6 '
union all select 7 , '公司5 ', 0 , '2007/5/20 ', '标题7 '

select * from @a a where not exists(select 1 from @a where name=a.name and id <a.id)

--result
/*
id name paix shijian biaoti
---------- --------- ---------- -------------- ----------
1 公司1 1 2007-05-20 00:00:00 标题1
3 公司2 2 2007-05-20 00:00:00 标题3
5 公司3 0 2007-05-20 00:00:00 标题5
6 公司4 0 2007-05-20 00:00:00 标题6
7 公司5 0 2007-05-20 00:00:00 标题7

(所影响的行数为 5 行)
*/
[解决办法]
select * from 表 as T
where id =(select min(id) from 表 where name=T.name)

热点排行