MySQL を使用して複数のディーラーの最低値を持つ行を取得する
ID、名前、値、ディーラーを含む列を持つデータベースで、個別のディーラーごとに最小値を持つ行を取得することを目的としています。 MIN() と GROUP BY を試してみましたが、解決策が見つかりませんでした。
推奨解決策:
解決策 1:
SELECT t1.* FROM your_table t1 JOIN ( SELECT MIN(value) AS min_value, dealer FROM your_table GROUP BY dealer ) AS t2 ON t1.dealer = t2.dealer AND t1.value = t2.min_value
解決策 2 (高速):
SELECT t1.* FROM your_table t1 LEFT JOIN your_table t2 ON t1.dealer = t2.dealer AND t1.value > t2.value WHERE t2.value IS NULL
説明:
解決策 1 では、サブクエリを利用して各ディーラーの最小値を見つけます。次に、このサブクエリをメイン テーブルと結合して、対応する行を取得します。
ソリューション 2 では、自己結合を活用して、各ディーラーの最小値を持つ行を効率的に見つけます。 LEFT JOIN を使用して、より低い値の行があるかどうかを確認します。そうでない場合は、そのディーラーの最低値になります。
追加情報:
これは、よく発生する MySQL の問題です。詳細については、「特定の列のグループごとの最大値/最小値を保持する行」のドキュメントを参照してください。
以上がMySQL で各ディーラーの最小値を持つ行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。