2012-05-16 50 views
1

分組我有此查詢:通過時間在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..that另一場基本上是每個row..I的時間要訂購的節點名稱(選擇他們),最近我加了他們。

我該怎麼做?每個節點名有一個時間..但我想按它加入的最晚時間節點名稱..

我想用MAX(於TIME_ADDED),然後將其添加到組by..but這給了我一個錯誤..

什麼可能是一個可能的解決方案?

回答

1

如果我明白了這個問題,以下可能就是你要找的。如果你想將它們與最新的次下令第一個或最後一個(根據需要添加DESC),這是不是很清楚,我:

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

有一點要注意的是,查詢在OP,其中包括場不在GROUP BY子句中不明確,在大多數SQL實現中不允許。

+0

謝謝..什麼不按順序排列? –

+0

@DmitryMakovetskiyd:意思是「按選擇列表中的第二項進行排序」。這只是一個快捷方式(也可能是一個錯誤,因爲如果您更改了select子句中的項目順序,但忘記更新它,則會出現錯誤)。我會編輯它並適當地別名。 –

+0

它會影響,如果我按時間順序......沒有最大的功能...並做訂單desc –

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排序自動顯示最近創建的第一個。

+0

1064 - 您的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在第3行的'DESC,n1.node_name ORDER BY n1.time_added DESC LIMIT 0,30'附近使用正確的語法。 –

+0

它應該是GROUP BY n1.node_name而不是'GROUP BY DESC,n1.node_name' - 'GROU BY DESC'是一個複製錯誤,我猜... – shadyyx

+0

@shadyyx:感謝更正 – Suleman