【发布时间】:2022-01-26 15:12:54
【问题描述】:
表:
| id | action | project_id | created_on | last_updated_on |
|---|---|---|---|---|
| 1 | Update | 123 | 2021.1.1 | 2021.5.3 |
| 2 | creation | 123 | 2021.1.4 | 2021.5.2 |
| 3 | Update | 123 | 2021.1.3 | 2021.5.1 |
| 4 | Update | 456 | 2021.2.1 | 2021.6.3 |
| 5 | Update | 456 | 2021.2.2 | 2021.6.2 |
| 6 | creation | 456 | 2021.2.3 | 2021.6.1 |
我想获取project 及其最近创建的Update 操作的last_updated_on 的地图。
我的说法是
select project_id, last_updated_on
from table
where action = "Update"
group by project_id
order by created_on desc
limit 1
但是我得到了SELECT list is not in GROUP BY clause and contains nonaggregated column的错误。
我无法更改ONLY_FULL_GROUP_BY 属性。
在我的用例中,我认为我也不能将 last_updated_on 添加到 group by 中。
我也试过
select
project_id,
(select last_updated_on where created_on = max(created_on)) as "last_updated_on"
.
.
.
但错误仍然发生。
希望有人可以帮助我。 提前问好!
更新:
示例表的期望结果:
| project_id | last_updated_on |
|---|---|
| 123 | 2021.5.1 |
| 456 | 2021.6.2 |
解释:
- 对于
project_id = 123,第1 行和第3 行的action是update, - 在
order by created_on desc limit 1之后,第3行被选中,其last_updated_on为2021.5.1。
【问题讨论】:
-
您想显示没有 UPDATE 操作的项目,还是直接忽略它们?