如何使用mySQL订购,分组和订购

Mar*_*ark 6 mysql group-by greatest-n-per-group

这是我的表的简化版本

tbl_records
-title
-created
-views
Run Code Online (Sandbox Code Playgroud)

我想知道如何根据标题对查询进行分组,但是为每个组返回的记录是最近创建的.然后我会按意见订购.

我猜的一种方法是做一个子查询并按创建顺序排序,然后按标题对其进行分组,然后从这些结果按视图排序.我想有更好的方法.

谢谢

编辑:

样本数据:

-title: Gnu Design
-created: 2009-11-11 14:47:18
-views: 104

-title: Gnu Design
-created:2010-01-01 21:37:09
-views:9

-title: French Connection
-created:2010-05-01 09:27:19
-views:20
Run Code Online (Sandbox Code Playgroud)

我希望结果如下:

-title: French Connection
-created:2010-05-01 09:27:19
-views:20

-title: Gnu Design
-created:2010-01-01 21:37:09
-views:9
Run Code Online (Sandbox Code Playgroud)

仅显示最新的Gnu设计,然后按视图排序结果.

Bil*_*win 3

greatest-n-per-group这是StackOverflow 上经常出现的问题的一个例子。

这是我通常的解决方案:

SELECT t1.*
FROM tbl_records t1
LEFT OUTER JOIN tbl_records t2 ON (t1.title = t2.title AND 
  (t1.created < t2.created OR t1.created = t2.created AND t1.primarykey < t2.primarykey))
WHERE t2.title IS NULL;
Run Code Online (Sandbox Code Playgroud)

说明:查找不存在具有相同且更大日期的t1其他行的行。如果出现平局,请使用一些唯一的键来解决平局,除非可以为每个获取多行。t2titlecreatedtitle