mysql - 通过分组列返回特定行
问题描述
我坚持使用 SQL 查询,我的想法是我有一个数据库,我将所有文档与每个文档version(revisionNumber)
等一起保存在其中。我想要实现的是,我目前只想访问那些最新的revisionNumber
.
| id | title | documentForm | revisionNumber | effectiveDate |
| --: | ------------------- | -------------| -------------: | :------------ |
| 1 | Event Calendar | SOP-CL | 1.0 | 2011-02-02 |
| 2 | Event Calendar | SOP-CL | 2.0 | 2012-12-16 |
| 3 | Event Calendar | SOP-CL | 3.0 | 2014-02-15 |
| 4 | Event Calendar | SOP-CL | 4.0 | 2014-08-01 |
| 5 | Event Calendar | SOP-CL | 5.0 | 2016-09-12 |
| 6 | Event Calendar | SOP-CL | 6.0 | 2018-09-11 |
| 7 | Software development| SOP-DEV | 1.0 | 2015-11-25 |
| 8 | Granting and... | SOP-GRA | 1.0 | 2014-08-04 |
| 9 | Granting and... | SOP-GRA | 2.0 | 2015-12-07 |
| 10 | Granting and... | SOP-GRA | 3.0 | 2018-03-26 |
在这里你可以看到查询后我需要得到的结果:
| id | title | documentForm | revisionNumber | effectiveDate |
| --: | ------------------- | ------------ | -------------: | :------------ |
| 6 | Event Calendar | SOP-CL | 6.0 | 2018-09-11 |
| 7 | Software development| SOP-CL | 1.0 | 2015-11-25 |
| 3 | Granting and... | SOP-GRA | 3.0 | 2018-03-26 |
我一直在谷歌搜索,发现它可以通过分组来完成 - 例如 - documentForm 并返回MAX(revisionNumber)
,但我没有得到正确的行id
和effectiveDate
. 我想我只是没有正确使用它们。
解决方案
使用相关子查询
select * from table1 t1
where revisionNumber in ( select max(revisionNumber)
from
table1 t2 where t1.title=t2.title and t1.documentForm=t2.documentForm
group by t2.title,t2.documentForm
)
推荐阅读
- netsuite - Netsuite Manufacturing - 从成员项目继承属性的程序集
- django - Neo4j 空间数据库和 GeoDjango 框架
- html - 在右边放一个 iframe
- geometry - 给定其他三个,如何计算四面体的第四个顶点?
- php - PHP - 检查数组中是否存在 JSON 值,如果存在则获取关联的 user_id
- c# - csvHelper 将不同行的值放入数据库中的一个字段中
- python-3.x - 将字典值与浮点数进行比较
- javascript - 在 :D\ 上安装 Reactjs 中止,但在 :C\ 上没有安装,为什么?
- validation - 如何更改 Golang (Gin) 中不同端点所需标签的绑定?
- node.js - 仅在将 Inkscape 作为子进程调用时出现“无效动词”错误