SQL语句:显示最后一次检查记录信息
同一个企业可能会被 市 , 省 ,县 三级用户检查,
可能检查多次 , 现在只想查询出企业检查时间最近的一次,最后一次 检查的 记录信息
如:
企业id 企业名称 检查日期 检查结果 检查用户级别
1 企业1 2013-10-10 成功 1(市)
1 企业1 2014-5-5 成功 2(省)
2 企业2 2015-6-6 成功 3 (县)
现在就像把 企业 最后一次 检查时间的 信息 取出来
select * from 表 where exists(
select 1 from (select 企业id, max(检查日期) as 检查日期 from 表 group by 企业id) a where a.企业id=表.企业id and a.检查日期=表.检查日期
)
你当时 是怎么想的这个思路 能讲讲么?
@Sharpest: 先找到每个企业的最大检查日期,再把企业ID,最大检查日期当做搜索条件找到这条记录
select top 1 * from table group by date desc
一楼的写法思路正确,但是写法复杂,不可取,比较简洁且兼顾效率的写法是:
我先假定表名是: T_InspectionRecords
select * from T_InspectionRecords a where not exists (
select 1 from T_InspectionRecords where 企业id = a.企业id and 检查日期 > a.检查日期
)
这样就查出了所有企业的最新一条检查记录,至于思路也很简单,不存在另外一条记录和他具有相同的企业id且检查日期更新,这就是我们要找的记录。