ホームページ > データベース > mysql チュートリアル > MySQL でグループごとの最後の行を効率的に取得するにはどうすればよいですか?

MySQL でグループごとの最後の行を効率的に取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-12 15:19:01
オリジナル
299 人が閲覧しました

How to Efficiently Retrieve the Last Row per Group in MySQL?

MySQL を使用したグループごとの「最後の」行の取得

問題:

同様のクエリを使用して、MySQL テーブル内の各グループの最後の行を作成します。 to:

select * 
    from foo as a
    where a.id = (select max(id) from foo where uid = a.uid group by uid)
    group by uid;
ログイン後にコピー

考えられる解決策:

次の代替クエリを検討してください:

SELECT t1.* FROM foo t1
  LEFT JOIN foo t2
    ON t1.id < t2.id AND t1.uid = t2.uid
WHERE t2.id is NULL;
ログイン後にコピー

説明:

このクエリは、テーブル内の各行を ID に基づいて後続行と左結合します。 カラム。後続行が存在しない場合 (つまり、グループ内の最後の行である場合)、t2.id 列は NULL になります。 NULL をフィルタリングすることで、各グループの最後の行を効果的に分離します。

追加メモ:

元のクエリと代替クエリのクエリ パフォーマンスを分析するには、EXPLAIN を使用します。

この方法は、大規模なデータセットや複雑なグループ化に特に役立ちます。単純なケースでは、他のアプローチの方が効率的である可能性があります。

以上がMySQL でグループごとの最後の行を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート