首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不指定记录的情况下获取具体记录的最新日期?

如何在不指定记录的情况下获取具体记录的最新日期?
EN

Stack Overflow用户
提问于 2020-03-09 20:59:49
回答 1查看 37关注 0票数 1

我有两个表:订单和运输。

代码语言:javascript
复制
ORDER  
id

TRANSPORTATION  
id  
order_id  
date  
status            (could be 'ok', 'ca', 'ko')

1个订单可以有多个运输。我想要所有最新运输状态为'OK'的订单。

如果我这样做了:

代码语言:javascript
复制
select ord.*
from   orders ord
       join transportation tr
       on ord.id = tr.order_id
where  tr.date = (select max(date) from transportation where status like 'OK');

我将获得所有运输的最新日期,但我只想要该订单中所有运输的最新日期。

例如,如果我有这些订单和这些运输,并且我想要每个订单的最后一个运输,其状态是'ok':

代码语言:javascript
复制
order_id, transportation_id, date, status
001, 001, 01/01/19, ok
001, 002, 01/01/20, ca

002, 003, 01/01/19, ca
002, 004, 01/01/18, ok

003, 005, 01/01/17, ok
003, 006, 01/01/16, ca

我期望得到以下结果:

代码语言:javascript
复制
003, 005, 01/01/17, ok
EN

回答 1

Stack Overflow用户

发布于 2020-03-09 21:04:58

使用not exists执行此操作

代码语言:javascript
复制
select ord.* from orders ord join transportation tr on ord.id = tr.order_id
where tr.status = 'OK'
and not exists(select 1 from transportation b where b.status = 'OK' and tr.date > b.date)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60601108

复制
相关文章

相似问题

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