按类别分组时如何获取最新的产品标题?
例如,假设这是我的产品表:
id | title | catID | timestamp
1 | apple | 1 | 2020-07-13 08:21:47
2 | pear | 1 | 2020-07-14 08:21:47
3 | kiwi | 1 | 2020-07-15 08:21:47
我想要一个查询来提供总产品和最后添加的产品。这是一个有点贪婪的查询,并且使它变得更加困难,但我认为我可以通过 group by 来做到这一点。如果可能的话,我真的更愿意保留这一切查询。但我担心我需要添加一个子查询。
SELECT
p.catID
, COUNT(p.id) as items
, MAX(p.id) as last_added_id
, CASE WHEN p.id = MAX(p.id) THEN p.title
FROM products p
WHERE p.catID = 1
GROUP BY p.catID
问题是,我的标题为空。
最佳答案
我实际上想不出一种不使用子查询来做到这一点的方法。假设您使用的是 MySQL 8+,我们可以在这里使用窗口函数:
SELECT id, title, catID, timestamp, cnt
FROM
(
SELECT *, COUNT(*) OVER () AS cnt
FROM products
WHERE catID = 1
) t
ORDER BY timestamp DESC
LIMIT 1;
关于mysql - 如何通过组获取最新记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63488023/