Mysql中的按日期排序和分组

Mysql中的按日期排序和分组,mysql,subquery,Mysql,Subquery,大家好,提前谢谢。 我有一个无法解决的小问题,我有这个表,我想按日期排序并对它进行分组,但每个idCAT只显示1行 | id | idcat | name | date | | 1 | 3 | xx | 2011-01-02 | | 2 | 4 | xf | 2011-01-02 | | 3 | 3 | cd | 2011-01-01 | | 4 | 1 | cg | 2011-01-04 | | 5 | 4

大家好,提前谢谢。 我有一个无法解决的小问题,我有这个表,我想按日期排序并对它进行分组,但每个idCAT只显示1行

| id | idcat | name |     date   |

| 1  | 3     | xx   | 2011-01-02 |

| 2  | 4     | xf   | 2011-01-02 |

| 3  | 3     | cd   | 2011-01-01 |

| 4  | 1     | cg   | 2011-01-04 |

| 5  | 4     | ce   | 2011-01-06 |
我想保持这种方式,尝试一种方式,但我不能

| 2  | 4     | xf   | 2011-01-02 |

| 3  | 3     | cd   | 2011-01-01 |

| 4  | 1     | cg   | 2011-01-04 |
按ID订购

谢谢,这是我唯一的朋友

SELECT id, idcat, name, date FROM (SELECT * FROM data ORDER BY idcat, date ) m GROUP BY idcat
如果您试图按idcat获取分组,则按日期排序:


按idcat order by date从myTable group中选择id、idcat、名称、日期

我无法方便地测试atm,但请尝试以下方法:

SELECT FIRST(id), idcat, FIRST(name), FIRST(date) AS d FROM myTable GROUP BY idcat ORDER BY d;

注意使用第一个调用来选择表中具有任何特定idcat的第一行。

您使用什么逻辑来获得所需的结果?2011-01-01与源数据中的2,4,xf不在同一行。我不理解这个逻辑?对不起,是2 | 4 | xf | 2011-01-02它不工作,我试过了,然后订购了它,理想情况下,在订购和分组之前,你应该首先根据idcat对日期进行排序,他们选择最早的日期,然后打包,这样每个IDCathmm只返回最早的日期,我发现你的困境更加困难。如果我理解您的意思,您希望获得每个idcat中最老的一个列表,按日期排序。从myTable按日期排序按idcat降序分组中选择id、idcat、name、date如何;我的表格是idcat 4,其中有两行将按2011年2月1日的日期进行排序idcat 4,依此类推idcat 3.1的其余部分如果您需要更具体的行,比如说,每个idcat中最近的行,您需要执行更多操作:选择FIRSTid、idcat、FIRSTname,从myTable中选择*从myTable中按日期排序按日期描述组按idcat排序按d;将每个idcat最旧项目的DESC更改为ASC。