mysql - 带有条件的 SQL 连接表仅显示 Max
问题描述
我需要在 UniqueID 上加入 tableA 和 tableB 但是我只想加入 tableA 中具有某些状态限制的最新日期(不在 S 中)。我知道我需要使用 Max 功能,但是我无法让它工作。我如何得到下面的结果表?
我在想类似的东西:
Select
tableA.UniqueID,
MAX(tableA.Date),
tableA.Status,
tableB.Col1
From tableA
Inner join tableB on (tableB.UniqueID = tableA.UniqueID and tableA.Status = 'A')`
tableA:
| UniqueID | Date | Status |
| -------- | ------------------- |--------|
| 123 | 2015-07-05 00:00:00 | S |
| 123 | 2015-07-06 00:00:00 | S |
| 123 | 2015-07-07 00:00:00 | A |
and tableB:
| UniqueID | Col1 |
| -------- | - |
| 123 | X |
| 125 | Y |
| 126 | Z |
Result table:
| UniqueID | Date | Status | Col1|
| -------- | ------------------- |--------|---- |
| 123 | 2015-07-07 00:00:00 | A | X |
解决方案
这是其中一种方式——
select
t_a.*, t_b.*
from
table_b t_b
join
(
select
uniqueid, date, status,
rank() over (partition by uniqueid order by date desc ) rank_
from
table_a
) t_a on t_b.uniqueid = t_a.uniqueid
where
t_a.rank_ = 1
;
小提琴网址:(https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=06660177b6c116a811218863ce428985)
推荐阅读
- ios - 该层被“CAShapeLayer”所掩盖,路径为矩形、圆角矩形或椭圆
- database - NoSQL 离线/独立 - 无需 exe 应用程序直接查询 GraphDB 文件?
- php - 如何使用 file_put_contents 解析成 txt 文件
- android - react-native-audio-recorder-player , audioRecorderPlayer.stopRecorder() crahs app
- flutter - 如何从单独的类中调用颤振对话框?
- java - React Native 集成到现有的 android 项目
- ios - 如何在数组内搜索并返回所有搜索到的数据
- primefaces-datatable - Primefaces 数据表限制重新排序
- asp.net - Swagger:POST 和 PUT 在同一控制器中时无法加载 API 定义(Web Api 核心)
- r - 在 R 中,结合单个字数和字典字数