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`;

注意すべき点の1つは、GROUP BY句にないフィールドを含むOPのクエリはあいまいであり、ほとんどの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 に答える