我被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 |
我在google上搜索发现,可以通过分组(比如documentform)和返回来完成 MAX(revisionNumber)
但我没有找到正确的一行 id
以及 effectiveDate
. 我想我只是用得不对。
3条答案
按热度按时间rdrgkggo1#
您可以尝试在where子句中使用子查询。
架构(mysql v5.6)
查询#1
db fiddle视图
ujv3wf0j2#
使用相关子查询
v8wbuo2f3#
有一个子查询
GROUP BY
返回每个文档表单及其最高版本修订号。JOIN
结果是: