MySQLのLIMIT句を使いこなす:SELECT, UPDATE, DELETEの件数制限方法
作成日:2010.11.18
MySQLのLIMIT句を使って、データベース操作時に処理する件数を制限する方法を解説します。SELECT文、UPDATE文、DELETE文それぞれでの使用方法や、件数指定の際の注意点など。
error この記事は最終更新日から15年以上が経過しています。
MySQL で、指定した件数のみ何らかの処理を行いたいときは、LIMIT句を利用します。
SELECT文の場合
ORDER BY句の次に LIMIT句を書いて、件数指定します。
ORDER BY句は使用しなくても構いませんが、使用しないと当然意図した順番通りに抽出することができません。
最初の50件のみを SELECT文で抽出したい場合は、
select * from table_name order by user_id limit 50;
と書けば、user_id の昇順で、50件のみ抽出されます。
また、50件目以降のデータを100件抽出したい、というような場合は、
select * from table_name order by user_id limit 50, 100;
と書くことで、実現できます。
UPDATE文・DELETE文の場合
SELECT文と同様に、ORDER BY句の次に LIMIT句を書いて、件数指定します。
こちらも同様に、ORDER BY句は使用しなくてもいいですが、意図した順番通りの処理ができないので結果は SELECT文以上に致命的ですw
update table_name set user_flag = 1 order by user_entry_date limit 50;
delete from table_name order by user_entry_date limit 50;
上記のように書くと、例えば user_entry_date が古いデータから順に50件に、user_flag を立てる、データを消す、というような処理を行なえます。
なお、UPDATE文や DELETE文では、残念ながら、SELECT文のように「limit 50,100」というような指定はできないようです。
奈良市を拠点に、27年以上の経験を持つフリーランスWebエンジニア、阿部辰也です。
これまで、ECサイトのバックエンド開発や業務効率化システム、公共施設の予約システムなど、多彩なプロジェクトを手がけ、企業様や制作会社様のパートナーとして信頼を築いてまいりました。
【制作会社・企業様向けサポート】
Webシステムの開発やサイト改善でお困りの際は、どうぞお気軽にご相談ください。小さな疑問から大規模プロジェクトまで、最適なご提案を心を込めてさせていただきます。
ぜひ、プロフィールやWeb制作会社様向け業務案内、一般企業様向け業務案内もご覧くださいね。
MySQLのEXPLAIN入門:実行計画の読み方と遅いSQLの調べ方
2026.10.05
MySQLのEXPLAINの使い方と、key・type・rows・Extraなどの読み方を、注文検索の例で解説します。複合インデックスの改善候補を比較する手順や、推定値と実測の違い、LIMIT付きの検索を検証するときの注意点もまとめます。
Laravelのコードレビューで遅いSQLの候補を洗い出す
2026.10.02
Laravelのコードレビューで、ループ内のDBアクセスやEloquentのN+1、大量取得、検索条件とインデックスなど、性能問題につながりやすい箇所を候補として洗い出します。Laravelで発行SQLと実行時間を確認し、MySQLのEXPLAINや実データに近い環境での計測へつなげる方法を紹介します。コードレビューだけではSQLの実行時間を断定できない点も説明します。
XAMPPのMariaDBでERROR 1130が発生したときの復旧手順
2026.08.05
XAMPPのMariaDBでERROR 1130が発生し、phpMyAdminやCLIから接続できなくなった際の復旧手順を紹介します。接続先とプロセスを確認し、データディレクトリをバックアップした上で、復旧モードから破損したmysql.global_privを検査・修復し、通常起動後の接続確認まで行います。
XAMPPのMySQLが起動しなくなった時のデータ救出方法
2026.04.05
XAMPPのMySQL起動エラーでお困りの開発者向けに、データ損失を防ぎながら行なう応急的な復旧方法を詳しく紹介。通常の手段では解決しない場合、ファイルシステムレベルでのデータ救出技法を使う具体的な手順をまとめました。