web-dev-qa-db-ja.com

MySQL-GROUP BYおよびDESCの使用

私のSQLクエリでは、GROUP BYおよびORDER BY句を使用してデータを選択しています。テーブルには、各行の時間が異なる複数の行にわたって同じnumbersがあります。ですから、GROUP BY句を適用したいと思います。

ただし、結果では数値と​​ともに最も古い時間を返しますが、最新の時間が必要です。

SELECT * FROM TABLE GROUP BY (numbers) ORDER BY time DESC

クエリは、最初にGROUP BYを適用し、次にORDER BY ...を適用する必要があるかのように見えますが、結果はこのように機能していないようです。

これを修正する方法はありますか?

13
user1946705

回避策は、クエリを次のように書き直すことです。

SELECT * FROM (SELECT * FROM table ORDER BY time DESC) AS t GROUP BY numbers;
16
jbrond
SELECT * 
FROM table t
WHERE time = (
    SELECT max(time)
    FROM table
    WHERE t.numbers = numbers
)
20
Karolis
SELECT * FROM table
    WHERE time IN (
        SELECT MAX(time)
            FROM table
            GROUP BY numbers
    )
1
B. Bohdan

マニュアルによると、descをグループごとのリストに追加できます:例:
group by item1、item2 desc、item3

ロールアップの有無にかかわらず。

私はこれを試してみましたが、Ubuntuバージョン5.5.58で動作します。参照ページは次のとおりです: https://dev.mysql.com/doc/refman/5.7/en/group-by-modifiers.html

0
Betty Mock