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

编程越来越差了.简单的SQL语句.

2012-01-09 
编程越来越差了.求一个简单的SQL语句.....编程越来越差了.求一个简单的SQL语句.....各位,有如下表:id |类

编程越来越差了.求一个简单的SQL语句.....
编程越来越差了.求一个简单的SQL语句..... 

各位,有如下表:

id |类型 | 内容 | 发表时间
1 |A | 12344455 | 2007-9-10
2 |B | 34223424 | 2007-9-12
3 |C | 11111111 | 2007-9-13
1 |A | 12344455 | 2007-10-10
2 |B | 34223424 | 2007-10-12

即根据发表时间取得每个类型的最新的一条记录.

请教各位大侠,谢谢啦!~~

应该看懂了吧?


[解决办法]

SQL code
select * from 表 a where 发表时间=(select max(发表时间) from 表 where 类型=a.类型)
[解决办法]
SQL code
--原始数据:@Tdeclare @T table(id int,类型 varchar(8),内容 int,发表时间 datetime)insert @Tselect 1,'&brvbarA',12344455,'2007-9-10' union allselect 2,'&brvbarB',34223424,'2007-9-12' union allselect 3,'&brvbarC',11111111,'2007-9-13' union allselect 1,'&brvbarA',12344455,'2007-10-10' union allselect 2,'&brvbarB',34223424,'2007-10-12'select *
[解决办法]
SQL code
--可以使用cross applycreate function dbo.myfunc(@id as int)returns tableasreturn select top(1) *  from dbo.testwhere id=@idorder by 发表时间 desc;goselect b.id,b.类型,b.内容,b.发表时间from dbo.test  a cross  apply dbo.myfunc(a.id) as bgroup by b.id,b.类型,b.内容,b.发表时间;go-------------------id          类型       内容          发表时间----------- -------- ----------- -----------------------1           A        12344455    2007-10-10 00:00:00.0002           B        34223424    2007-10-12 00:00:00.0003           C        11111111    2007-09-13 00:00:00.000(3 row(s) affected)
[解决办法]
create table T(id int,类型 varchar(8),内容 int,发表时间 datetime)
insert T
select 1,'&brvbarA',12344455,'2007-9-10' union all
select 2,'&brvbarB',34223424,'2007-9-12' union all
select 3,'&brvbarC',11111111,'2007-9-13' union all
select 1,'&brvbarA',12344455,'2007-10-10' union all
select 2,'&brvbarB',34223424,'2007-10-12'

select a.* from T a
inner join 
(
select 类型,max(发表时间)as 发表时间 from T group by 类型 
)b on a.类型=b.类型 and a.发表时间=b.发表时间
order by a.类型

--result:
1 &brvbarA123444552007-10-10 00:00:00.000
2 &brvbarB342234242007-10-12 00:00:00.000
3 &brvbarC111111112007-09-13 00:00:00.000

[解决办法]
SQL code
select * from 表 a where 发表时间=(select top 1 发表时间 from 表 where 类型=a.类型 order by 发表时间)
[解决办法]
create table tb (id int ,lx char(2), lr char(20),fbsj datetime)
insert tb select 1 ,'A', '12344455', '2007-9-10' union all select 
2,'B', '34223424', '2007-9-12' union all select 
3,'C', '11111111', '2007-9-13' union all select 
1,'A', '12344455', '2007-10-10' union all select 
2,'B', '34223424', '2007-10-12' 
//最新的一条记录.
select * from tb a where not exists (select * from tb where id=a.id and fbsj>a.fbsj )
//最早的一条记录
select * from tb a where not exists (select * from tb where id=a.id and fbsj<a.fbsj )
[解决办法]
declare @T table(id int,type varchar(8),text int,sdate datetime)
insert @T
select 1,'&brvbarA',12344455,'2007-9-10' union all
select 2,'&brvbarB',34223424,'2007-9-12' union all
select 3,'&brvbarC',11111111,'2007-9-13' union all
select 1,'&brvbarA',12344455,'2007-10-10' union all
select 2,'&brvbarB',34223424,'2007-10-12'


select id,type,text,max(sdate) sdate from (select id,type,text,sdate from @t group by type,id,text,sdate) a group by id,type,text






-----------result
1
&brvbarA123444552007-10-10 00:00:00.0002
&brvbarB342234242007-10-12 00:00:00.0003
&brvbarC111111112007-09-13 00:00:00.000

提供一种不同的写法

热点排行
Bad Request.