【发布时间】:2016-09-06 11:57:22
【问题描述】:
编辑:
我删除了最后令人困惑的评论,并添加了一个我认为无关紧要的附加列 pl_id(由于我明显缺乏对 group by 工作原理的理解)。在尝试发布的建议时,我遇到了一个问题,即引入 MAX/Group By 会导致
| name | license_plate | pl_id | start_date |
| aaron | AA-AA-22 | 3 | 2016-1-1 |
我期望的地方:
| name | license_plate | pl_id | start_date |
| aaron | AA-AA-22 | 4 | 2016-1-1 |
所以不知何故,车牌 AA-AA-22 的最大日期,即 2016-1-1,出现在 pl_id = 3 的记录中,为什么结果返回日期为 pl_id 4 的记录? 结束编辑
我有一个带有列的表格:
- 姓名
- license_plate
- 开始日期
我需要一个查询,它为每个具有最大 start_date 或 start_date 为空的车牌返回一条记录。但是空的 start_date 应该优先于最大 start_date。
保证每个车牌最多有一个 start_date = null 的条目,但可以有多个有效的 'start_date'-s 条目。
所以例如在下表中执行时:
| name | license_plate | pl_id | start_date |
| aaron | AA-AA-11 | 1 | 2015-1-1 |
| aaron | AA-AA-11 | 2 | null |
| aaron | AA-AA-22 | 3 | 2015-1-1 |
| aaron | AA-AA-22 | 4 | 2016-1-1 |
| bill | BB-BB-11 | 5 | 2015-1-1 |
| bill | BB-BB-11 | 6 | null |
| bill | BB-BB-22 | 7 | 2015-1-1 |
| clark | CC-CC-11 | 8 | 2015-1-1 |
| clark | CC-CC-11 | 9 | 2016-1-1 |
| dave | DD-DD-11 | 10 | 2014-1-1 |
| dave | DD-DD-11 | 11 | 2015-1-1 |
| dave | DD-DD-11 | 12 | 2016-1-1 |
| eddy | EE-EE-11 | 13 | null |
查询应该返回:
| name | license_plate | pl_id | start_date |
| aaron | AA-AA-11 | 2 | null |
| aaron | AA-AA-22 | 4 | 2016-1-1 |
| bill | BB-BB-11 | 6 | null |
| bill | BB-BB-22 | 7 | 2015-1-1 |
| clark | CC-CC-11 | 9 | 2016-1-1 |
| dave | DD-DD-11 | 12 | 2016-1-1 |
| eddy | EE-EE-11 | 13 | null |
【问题讨论】:
标签: mysql group-by multiple-conditions