表数据如下:

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

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

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

查询结果如下:

数据库->SQL Server2005->随机遇到问题->查询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
 

 


相关文章:

  • 2022-01-24
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-09-25
  • 2021-09-09
  • 2021-11-24
相关资源
相似解决方案