日期:2014-05-18  浏览次数:20625 次

一个流水表的查询问题
图书借阅记录
图书ID   会员ID   借阅时间   ...
b1             m1           2007-9-1
b2             m2           2007-9-1
b3             m3           2007-9-1
b1             m4           2007-9-11
b4             m4           2007--9-11
想得到图书最新的借阅信息,也就是图书b1现在m4手里,第一条记录就不要了,该怎么写查询语句,group   by好像不太好用,因为表还有其它很多字段不能一起group   by。


------解决方案--------------------
刚才的错了 !!

下面的:

declare @a table(图书ID varchar(20),会员ID varchar(20),借阅时间 datetime)
insert @a
select 'b1 ' , 'm1 ' , '2007-9-1 '
union all
select 'b2 ' , 'm2 ' , '2007-9-1 '
union all
select 'b3 ' , 'm3 ' , '2007-9-1 '
union all
select 'b1 ' , 'm4 ' , '2007-9-11 '


select * from @a a where 会员ID=(
select 会员ID from @a b where 借阅时间=(select top 1 借阅时间 from @a order by 借阅时间 desc ) and 借阅时间=a.借阅时间 group by 会员ID
)
/*

(所影响的行数为 4 行)

图书ID 会员ID 借阅时间
-------------------- -------------------- ------------------------------------------------------
b1 m4 2007-09-11 00:00:00.000

(所影响的行数为 1 行)

*/