Mysql 获取按类别分组的所有项目的上次更新时间
以下是我的项目表:Mysql 获取按类别分组的所有项目的上次更新时间,mysql,Mysql,以下是我的项目表: id (int) category_id (int) title (varchar 255) updated_timestamp (int) 每个项目都有一个类别id。假设我有以下数据: 1 | 14 | item 1 | 1376164492 2 | 11 | item 2 | 1376164508 3 | 12 | item 3 | 1376164512 4 | 14 | item 4 | 1376164532 5 |
id (int)
category_id (int)
title (varchar 255)
updated_timestamp (int)
每个项目都有一个类别id。假设我有以下数据:
1 | 14 | item 1 | 1376164492
2 | 11 | item 2 | 1376164508
3 | 12 | item 3 | 1376164512
4 | 14 | item 4 | 1376164532
5 | 12 | item 5 | 1376164542
6 | 11 | item 6 | 1376164552
我的目标是获得每个类别的最后更新时间戳。
因此,我需要:
11 = 1376164522 (greatest value for all items with category_id = 11)
12 = 1376164542 (greatest value for all items with category_id = 12)
14 = 1376164532 (greatest value for all items with category_id = 14)
以下是我的SQL:
SELECT
`category_id`, `updated_timestamp`
FROM
`my_table`
GROUP BY
`category_id`
ORDER BY
`updated_timestamp`
DESC
但当我运行它时,我会得到如下结果:
11 = 1376164508 (lowest value for all items with category_id = 11)
12 = 1376164512 (greatest value for all items with category_id = 12)
14 = 1376164492 (greatest value for all items with category_id = 14)
换句话说,DESC不起作用。我做错了什么
谢谢大家! 此查询允许您获取表中的所有列
SELECT a.*
FROM items a
INNER JOIN
(
SELECT category_id, MAX(updated_timestamp) updated_timestamp
FROM items
GROUP BY category_id
) b ON a.category_id = b.category_id AND
a.updated_timestamp = b.updated_timestamp
SELECT a.*
FROM items a
INNER JOIN
(
SELECT category_id, MAX(updated_timestamp) updated_timestamp
FROM items
GROUP BY category_id
) b ON a.category_id = b.category_id AND
a.updated_timestamp = b.updated_timestamp
MAX(
updated\u timestamp)
通过添加
MAX(
updated\u timestamp)
使用
MAX()
,尝试以下查询:从表1
中选择类别id,MAX(
updated\u timestamp`),按类别id
排序依据更新的\u timestamp
说明,尝试以下查询:选择类别id,MAX>(
updated_timestamp`)从table 1
GROUP BYcategory\u id
ORDER BYupdated\u timestamp
DESC`+1这个很好,因为它得到了合适的id
和title
以及+1这个很好,因为它得到了合适的id
和title
well@PaulDenisevich我已经更新了我的答案o返回所有适当的行数据(并使其与康拉德的答案不同)@PaulDenisevich我已更新我的答案以返回所有适当的行数据(并使其与康拉德的答案不同)
SELECT
`category_id`, MAX(`updated_timestamp` )
FROM
`Table1`
GROUP BY
`category_id`
ORDER BY
`updated_timestamp`
DESC