2

次の構造のMySQLテーブルがあります

+----+----------+---------+
| id | incident | message |
+----+----------+---------+
| 1  | 3        | 1       |
| 2  | 3        | 2       |
| 3  | 5        | 1       |
| 4  | 6        | 0       |
| 5  | 6        | 4       |
| 6  | 6        | 1       |
| 7  | 7        | 1       |
| 8  | 7        | 2       |
+----+----------+---------+

これは単純化したデータですが、同じことです。

私が欲しいのは、最高の値GROUP BY incidentを持つ行のみをフェッチすることです。message

上記のデータを取得して、次idの sを取得します。2, 3, 5, 8

GROUP BY incident ORDER BY message声明を出しましたが、うまくいきませんでした。私は MySQL のグループ化にあまり詳しくないので、ここで助けていただければ幸いです。

4

2 に答える 2

3

クエリには、それぞれの最大値を取得するサブクエリがあります。その結果は、2つの条件に基づいて元のテーブル自体に対して結合され、とと一致します。 messageincidentincidentmessage

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
            SELECT incident, MAX(message) maxM
            FROM tableName
            GROUP BY incident
        ) b ON a.incident = b.incident AND
                a.message = b.maxM
于 2012-11-16T11:34:03.133 に答える
0

これを試して:

SELECT * FROM 
(SELECT * FROM tablename ORDER BY message DESC) AS A 
GROUP BY incident 
于 2012-11-16T11:58:44.790 に答える