1

我有这个查询:

   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..但这给了我一个错误..

什么是可能的解决方案?

4

2 回答 2

1

如果我理解这个问题,以下可能是您正在寻找的。我不太清楚您是否希望它们首先或最后订购最新时间(DESC根据需要添加):

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

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

于 2012-05-16T14:11:31.623 回答
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 排序会自动首先显示最近创建的。

于 2012-05-16T14:09:10.830 回答