【发布时间】:2022-11-21 19:05:16
【问题描述】:
我有一个 orders 表,它有一个主键 id 列、一个 order_id 列和一个 created_date 列:
===================================
ORDERS
===================================
id | order_id | created_date
-----------------------------------
1 | 178 | 2022-11-16 09:25:11
2 | 182 | 2022-11-18 08:44:19
3 | 178 | 2022-11-17 11:16:22
4 | 178 | 2022-11-18 14:55:41
5 | 195 | 2022-11-15 09:11:17
6 | 195 | 2022-11-16 21:22:32
7 | 146 | 2022-11-16 16:55:09
8 | 178 | 2022-11-16 04:39:16
9 | 121 | 2022-11-16 01:20:19
我想编写一个查询,为特定的 order_id 返回最高的 created_date,所以我尝试使用 MAX()。但我也想返回最高created_date行的id。在上面的示例中,假设我想返回符合此条件的订单 ID 178 的行:
SELECT MAX(o.created_date),
o.id
FROM orders o
WHERE o.order_id = 178
GROUP BY o.id;
问题是,当我像这样编写查询时,会返回多行。我试过完全删除 GROUP BY 但除此之外,我无法理解我需要对此查询执行的操作以显示以下信息:
4 | 2022-11-18 14:55:41
我如何编写 PostgreSQL 查询来显示具有最高 created_date 值的行,同时显示该行的其他信息?
【问题讨论】:
-
这是什么时间戳:)
2022-11-16 04:39:76
标签: sql postgresql greatest-n-per-group