数据库->SQL Server2005->随机遇到问题->查询name重复,id不重复,时间最新的记录

表数据如下:

 

问题,id字段是主键,不重复;name有重复,date是datetime类型,

你要查询出每个name对应的最新时间,以及对应的id。

查询结果如下:

 

查询语句如下:

select * from For_test as a
where date in(select max(date) from For_test where name=a.name)

 

语句解析:

1.用表连接,首先查询出每个name对应的最新时间。

select max(date) from For_test where name=a.name
这条语句,进行了两张表的连接。两张表相同name的最新时间都查询出来。是不是效果如同

select name,max(date) from For_test group by name

因此有查询语句2,达到一样的效果

select * from For_test as a
where exists(select name,max(date) from For_test group by name having a.date=max(date))

2.进行表1与表2的date关联,然后把同行的id 显示出来。

3.思考为什么如下代码实现不了?

select id,name,max(date) from For_test group by name,id
 

 


posted @ 2011-06-12 16:02  草珊瑚  阅读(965)  评论(0编辑  收藏  举报