我有这个问题:
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,这给了我一个错误..
什么是可能的解决方案?
答案 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的订单会自动显示最近创建的。