首页 新闻 搜索 专区 学院

SQL语句:显示最后一次检查记录信息

0
悬赏园豆:10 [已解决问题] 解决于 2016-04-13 15:20

SQL语句:显示最后一次检查记录信息

同一个企业可能会被 市 , 省 ,县  三级用户检查,

可能检查多次 , 现在只想查询出企业检查时间最近的一次,最后一次 检查的 记录信息

 

如:

企业id  企业名称    检查日期            检查结果           检查用户级别

1        企业1       2013-10-10         成功                 1(市)

1        企业1        2014-5-5           成功                  2(省)

2       企业2         2015-6-6          成功                  3 (县)

 

现在就像把 企业 最后一次 检查时间的 信息 取出来

Sharpest的主页 Sharpest | 初学一级 | 园豆:102
提问于:2016-04-08 17:06
< >
分享
最佳答案
0

select * from 表 where exists(

select 1 from (select 企业id, max(检查日期) as 检查日期 from 表 group by 企业id) a where a.企业id=表.企业id and a.检查日期=表.检查日期

)

收获园豆:8
Rich.T | 老鸟四级 |园豆:3440 | 2016-04-08 17:13

你当时 是怎么想的这个思路 能讲讲么?

Sharpest | 园豆:102 (初学一级) | 2016-04-08 17:53

@Sharpest: 先找到每个企业的最大检查日期,再把企业ID,最大检查日期当做搜索条件找到这条记录

Rich.T | 园豆:3440 (老鸟四级) | 2016-04-12 09:45
其他回答(2)
0

select top 1 * from table group by date desc

小光 | 园豆:1802 (小虾三级) | 2016-04-08 17:52
0

一楼的写法思路正确,但是写法复杂,不可取,比较简洁且兼顾效率的写法是:

我先假定表名是: T_InspectionRecords

select * from T_InspectionRecords a where not exists (

    select 1 from T_InspectionRecords where 企业id = a.企业id and 检查日期 > a.检查日期
)
这样就查出了所有企业的最新一条检查记录,至于思路也很简单,不存在另外一条记录和他具有相同的企业id且检查日期更新,这就是我们要找的记录。

收获园豆:2
脚本王子 | 园豆:779 (小虾三级) | 2016-04-08 18:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册