簡體   English   中英

獲取按類別分組的所有項目的最新更新時間

[英]Get last updated time for all items grouped by category

這是我的物品表:

id (int)
category_id (int)
title (varchar 255)
updated_timestamp (int)

每個項目都有一個category_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 *
FROM `my_table` a
WHERE NOT EXISTS (
    SELECT 1 FROM `my_table` b
    WHERE b.`category_id` = a.`category_id`
    AND b.`updated_timestamp` > a.`updated_timestamp`
)
ORDER BY `updated_timestamp`

通過添加MAX( Updated_timestamp )嘗試按以下查詢

SELECT 
    `category_id`, MAX(`updated_timestamp` )
FROM 
    `Table1` 
GROUP BY 
    `category_id` 
ORDER BY 
    `updated_timestamp` 
DESC

SQL FIDDLE DEMO

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM