0

私のデータベーステーブル構造が次のようなものであると仮定しましょう

|   items    |   weight |
|============|==========|
|   item_1   |   50     |
|   item_2   |   90     |
|   item_2   |   45     |
|   item_2   |   60     |
|   item_3   |   40     | 

selectステートメントでは、重量が最も高く、高さ順に並べられたアイテムを1回だけ表示したいと思います。したがって、結果は次のようになります。

|   items    |   weight |
|============|==========|
|   item_2   |   90     |
|   item_1   |   50     |
|   item_3   |   40     | 

私は次のようなことを試みました

SELECT DISTINCT items, weight FROM mytable ORDER BY weight DESC

しかし、結果が実際には異なるため、機能しませんでした。

どうすればその選択を行うことができますか?

4

4 に答える 4

4

レコードを次のようにグループ化します。items

SELECT   items, MAX(weight)
FROM     mytable
GROUP BY items
ORDER BY MAX(weight) DESC

sqlfiddleでそれを参照してください。

于 2012-09-05T21:38:30.860 に答える
3
select items, max(weight)
from mytable
group by items
于 2012-09-05T21:38:32.200 に答える
2

SELECT items, MAX(weight) AS weight FROM mytable GROUP BY items ORDER BY weight DESC

集計関数構文は列から最大の結果を取得します 。SELECT MAXこれを使用すると、重みが最大の1つの結果が除外されます。そのためGROUP BY、結果を一致する結果に分離するために使用し、MAXすべてに適用されます。

GROUP BY注文結果の便利な副産物もありますが(常にASC)、この場合は間違った列を注文するため、独自のを追加する必要がありますORDER BY

ASを使用して、max列のエイリアスを作成し、整理を維持します。そうしないと、列がと呼ばれることを覚えておく必要がありますMAX(weight)

于 2012-09-05T21:40:15.290 に答える
1

次のグループが必要です。

select item, max(weight) as weight
from mytable
group by item
order by 2 desc
于 2012-09-05T21:38:32.417 に答える