Gol*_*die 10 mysql group-by max sql-order-by left-join
我的桌子titles看起来像这样
id |group|date |title
---+-----+--------------------+--------
1 |1 |2012-07-26 18:59:30 | Title 1
2 |1 |2012-07-26 19:01:20 | Title 2
3 |2 |2012-07-26 19:18:15 | Title 3
4 |2 |2012-07-26 20:09:28 | Title 4
5 |2 |2012-07-26 23:59:52 | Title 5
Run Code Online (Sandbox Code Playgroud)
我需要按日期按降序排列的每个组的最新结果.像这样的东西
id |group|date |title
---+-----+--------------------+--------
5 |2 |2012-07-26 23:59:52 | Title 5
2 |1 |2012-07-26 19:01:20 | Title 2
Run Code Online (Sandbox Code Playgroud)
我试过了
SELECT *
FROM `titles`
GROUP BY `group`
ORDER BY MAX( `date` ) DESC
Run Code Online (Sandbox Code Playgroud)
但是我首先要从小组中得到结果.像这样
id |group|date |title
---+-----+--------------------+--------
3 |2 |2012-07-26 18:59:30 | Title 3
1 |1 |2012-07-26 19:18:15 | Title 1
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?如果我使用LEFT JOIN,这个查询会变得更复杂吗?
Pal*_*ium 10
这个页面对我很有帮助; 它告诉我如何使用自联接来获得每组的最大/最小/某些行数.
在您的情况下,它可以应用于您想要的效果,如下所示:
SELECT * FROM
(SELECT group, MAX(date) AS date FROM titles GROUP BY group)
AS x JOIN titles USING (group, date);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11957 次 |
| 最近记录: |