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 BY
category\u id
ORDER BY
updated\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