在mysql中按时间分组

时间:2012-05-16 14:05:50

标签: php mysql

我有这个问题:

   SELECT *  FROM `mfw_navnode` n1
    WHERE  (n1.node_name='Eby' OR n1.node_name='Lana'  OR n1.node_name='MF' OR n1.node_name='Amur' OR n1.node_name='Asin' )
    GROUP BY n1.node_name

它有另一个叫做time_added的字段..这基本上就是每一行的时间..我想在最近添加它们的时候订购node_name(选择它们)。

我该怎么办?每个node_name都有一个时间..但我想按照添加的最新时间对每个node_name进行分组..

我想使用MAX(time_added),然后将它添加到group by..but,这给了我一个错误..

什么是可能的解决方案?

2 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,以下内容可能就是您要找的内容。我不清楚你是否希望它们按照最新时间排序或者最后一次(根据需要添加DESC):

SELECT `node_name`,  max(`time`) `maxtime` FROM `mfw_navnode` n1 ...
        GROUP BY node_name order by `maxtime`;

需要注意的一点是,OP中的查询(包括不在GROUP BY子句中的字段)不明确,在大多数SQL实现中都不允许。

答案 1 :(得分:0)

SELECT *  FROM `mfw_navnode` n1
WHERE  (n1.node_name='Eby' OR n1.node_name='Lana'  OR n1.node_name='MF' OR n1.node_name='Amur' OR n1.node_name='Asin' )
GROUP BY n1.node_name
ORDER BY n1.time_added DESC

DESC的订单会自动显示最近创建的。