それにあったものの練習のためのテーブルを見てみましょう。
SELECT * FROMショップORDER BY 記事。 + - ------- + -------- + ------- + | 記事| ディーラー| 価格| + - ------- + -------- + ------- + | 1 | | 3.45 | | 1 | B | 3.99 | | 2 | | 10.99 | | 3 | B | 1.45 | | 3 |C | 1.69 | | 3 | D | 1.25 | | 4 | D | 19.95 | + - ------- + -------- + ------- +
- 価格(価格)最も高価な品を探します:
方法A:最大値MAX関数重合を選択します
SELECT MAX(価格)FROM店。
方法2:最初の行のみを表示するように、「LIMIT 1」をソートすることによってORDER
SELECT 記事、ディーラー、価格 FROM ショップ ORDER BY価格DESCを LIMIT 1 ;
方法3:左の接続を使用します
SELECT s1.article、s1.dealer、s1.priceを FROM 店S1 LEFT JOINの店S2をON s1.price < s2.price WHERE s2.articleはIS NULL ;
- の各記事の最高価格を検索します。
最大値MAX関数、GROUP BYを持つ記事へのパケットを選択します。
集約関数によって以下の重合性官能基と機能を使用した場合、グループ化されたグループは、フィールドを変更することはできません。例えば、次の物品がGROUP BYである場合SELECT MAX()は、物品はできません。
SELECT記事、MAX(価格)AS価格FROM ショップ GROUP BY記事ORDER BY記事。
私たちは、物品、ディーラー、MAX(価格)、だけではない最大パケット記事を、計算を選択したい場合はGROUP BYでの集計関数を使用することで、弱点を持っています。
注意:SQL文だけの記事BYバック次GROUPを。
SELECT記事、ディーラー、MAX(価格)AS価格FROM ショップ GROUP BY記事ORDER BY記事。
次の文は正しいですが、唯一の最大値を求めて、物品のグループ化に合わせて目標を達成できませんでした。
SELECT記事、ディーラー、MAX(価格)AS価格FROM ショップ GROUP BY記事、ディーラーORDER BY記事。
GROUP BYと集計関数は、クエリが大きい名声のタイミングに接続されていることができません。
ここにあなたの内部の接続出演です。EnはINNER JOINをされ、あなたはINNERを書き込むことはできません。
同じ要求:それぞれの記事のために、最高の価格を見つけます。
エン
SELECT s1.article、ディーラー、s1.price
FROM ショップs1を 登録しよう( SELECT記事を、MAX(価格)AS 価格 FROM ショップ GROUP BY記事)AS s2を ON s1.article = s2.article AND s1.price = s2.price ORDER BY記事;
左の接続は(LEFT JOINを)も、この目標を達成することができます。
SELECT s1.article、s1.dealer、s1.priceを FROM 店S1 LEFT JOINのショップS2 ON s1.article = s2.articleをAND s1.price < s2.price WHERE s2.articleはIS NULL ORDER BY s1.article。
リファレンス接続
MySQLの公式サイト
https://dev.mysql.com/doc/refman/8.0/en/example-maximum-column-group-row.html