ホームページ >データベース >mysql チュートリアル >SQL 結合を使用してグループごとの最大値/最小値を効率的に見つけるにはどうすればよいですか?
このソリューションでは、結合操作を使用して、指定された列の最大値または最小値を持つ行を取得します。
各グループごとに最も高い OrderField 値を持つ行を検索します。 group:
SELECT t1.* FROM `Table` AS t1 LEFT OUTER JOIN `Table` AS t2 ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField WHERE t2.GroupId IS NULL ORDER BY t1.OrderField;
グループ内で複数のレコードが同じ最大 OrderField 値を共有する場合、条件をさらに絞り込むことができます:
SELECT t1.* FROM `Table` AS t1 LEFT OUTER JOIN `Table` AS t2 ON t1.GroupId = t2.GroupId AND (t1.OrderField < t2.OrderField OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id)) WHERE t2.GroupId IS NULL
このアプローチにより、グループ内に同点がある場合、最大の OrderField 値を持つ行が返されます。
以上がSQL 結合を使用してグループごとの最大値/最小値を効率的に見つけるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。