MySQL で各ディーラーの最低値を取得する
次の構造を持つデータベースを考えます:
CREATE TABLE your_table ( id INT NOT NULL, name VARCHAR(255) NOT NULL, value INT NOT NULL, dealer VARCHAR(255) NOT NULL );
目的: の最小値を持つ行を取得します。
解決策:
解決策 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 では、最適化された左結合を使用して、同じディーラーのより大きな値を持つ行を削除し、最も低い値を持つ行のみを効果的に返します。
MySQL は、ドキュメントにこれに関する専用のセクションを提供しています。 「特定の列のグループごとの最大値/最小値を保持する行」というタイトルの頻繁に発生するシナリオ。詳細と例については、このドキュメントを参照してください。
以上がMySQL で各ディーラーの最小値を持つ行を見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。