首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按FK查找表中的最后一条记录

按FK查找表中的最后一条记录
EN

Stack Overflow用户
提问于 2012-01-03 03:18:11
回答 4查看 102关注 0票数 1

我的表格如下所示:

代码语言:javascript
复制
id
caseid
status

表格中的示例数据:

代码语言:javascript
复制
1   10    open
2   10    published
3   10    reopened
4   11    open
5   11    contact
6   11    response
7   11    published

我需要获取上一次状态为published的所有caseid

因此,在上面的示例中,将只检索11 (因为caseid 10后来被重新打开)。

查询应该是什么样子的?

PS

我将PDO与预准备语句一起使用。

EN

回答 4

Stack Overflow用户

发布于 2012-01-03 03:34:20

代码语言:javascript
复制
select caseid from data d1 where d1.status = 'published' 
and not exists (select * from data d2 where d1.caseid = d2. caseid
and d2.id > d1.id)

为了获得最佳性能,应该对id和caseid列进行索引。

票数 4
EN

Stack Overflow用户

发布于 2012-01-03 03:25:57

代码语言:javascript
复制
select a.caseid
from
  (select max(id) as id, caseid
  from table
  group by caseid)a  --this would get the last entry for every caseid
  inner join table b on (a.id=b.id) 
where b.status = 'published' 
票数 3
EN

Stack Overflow用户

发布于 2012-01-03 03:26:36

编辑:

对不起--第一次脑筋发热:(

这样好点了吗?

代码语言:javascript
复制
select a.caseid,a.status
from temp a
where a.id in
  (select MAX(id) maxid from temp group by caseid)
  and status='published'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8704511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档