想象一下包含列类型,日期,消息的表。有些行看起来像这样(键入| date | message):
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 Aggregate函数,但我不是很擅长它们,所以我在这里要求一些帮助。
答案 0 :(得分:2)
没有任何aggregate可以使用不同的列,以便您可以获取具有最新日期的消息。
这可能会有所帮助:
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`
答案 1 :(得分:1)
请尝试:
Select type, date, message from tableName
group by type
having min(date)
请注意,最后一行无效
1 | 1310572305 | Hello
答案 2 :(得分:-1)
假设您的日期表示为您在此处显示的整数,您可以尝试以下操作:
SELECT type, MAX(date), message
FROM myDB.myTable
GROUP BY type;
除非我在这里缺少一些基本的东西,否则这应该可以解决问题。