簡體   English   中英

MySQL 組按某一種類型和select 最新排?

[英]MySQL group by a certain type and select the latest row?

想象一個包含類型、日期、消息列的表格。 有些行看起來像這樣(類型|日期|消息):

1 | 1310572318 | Hello
1 | 1310572317 | Hi
2 | 1310572315 | Wassup
3 | 1310572312 | Yo
3 | 1310572311 | Hey
3 | 1310572309 | Eyo
1 | 1310572305 | Hello
1 | 1310572303 | Good Day

是否可以按類型對它們進行分組,並選擇最新的(按日期排序),結果將是:

1 | 1310572318 | Hello
2 | 1310572315 | Wassup
3 | 1310572312 | Yo
1 | 1310572305 | Hello

我很確定我必須使用一些 MySQL 聚合函數,但我不太擅長它們,所以我在這里尋求一點幫助。

沒有任何聚合可以使用不同的列,以便您可以獲取最新日期的消息。

這可能會有所幫助:

SELECT 
    `type`, 
    MAX(`date`) AS `max_date`, 
    (SELECT `t2`.`message` FROM `table` AS `t2` WHERE `t2`.`type` = `t1`.`type` ORDER BY `t2`.`date` DESC LIMIT 1)
FROM `table` AS `t1`
GROUP BY `type`

請試試:

Select type, date, message from tableName
group by type
having min(date)

請注意,最后一行無效

 1 | 1310572305 | Hello

假設您的日期表示為您在此處顯示的整數,您可以嘗試以下操作:

SELECT type, MAX(date), message
FROM myDB.myTable
GROUP BY type;

除非我在這里遺漏了一些基本的東西,否則這應該可以解決問題。

暫無
暫無

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

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