MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する
MySQLでは、DELETE文でLIMIT句とORDER BYを使用して上位n件のレコードを削除することができます。
削除前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数のレコードが削除されます。
構文:
DELETE FROM テーブル [WHERE 条件]
ORDER BY カラム [ASC | DESC]
LIMIT 行数;
例えば、データベースtestのsalesテーブルに10件のレコードが格納されていて、priceの値が低い順に3件のレコードを削除する場合は以下のSQL文になります。
DELETE FROM test.sales ORDER BY price LIMIT 3;
実際に実行してみると以下のような結果になります。
削除前のデータ:
mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product | price | quantity |
+----------+-------------+---------+----------+
| 3 | WII | 4500 | 1 |
| 5 | PS3 | 10000 | 3 |
| 8 | G-SHOCK | 12000 | 8 |
| 9 | EXILIM | 14000 | 7 |
| 1 | PS4 | 20000 | 1 |
| 6 | COOLPIX | 23000 | 1 |
| 7 | amazon fire | 25000 | 6 |
| 10 | GoPro | 27000 | 3 |
| 4 | iPhone SE | 50000 | 4 |
| 2 | iPhone 6 | 1000000 | 2 |
+----------+-------------+---------+----------+
10 rows in set (0.01 sec)
DELETE文を実行:
mysql> DELETE FROM test.sales ORDER BY price LIMIT 3;
Query OK, 3 rows affected (0.08 sec)
削除後のデータ:
mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product | price | quantity |
+----------+-------------+---------+----------+
| 9 | EXILIM | 14000 | 7 |
| 1 | PS4 | 20000 | 1 |
| 6 | COOLPIX | 23000 | 1 |
| 7 | amazon fire | 25000 | 6 |
| 10 | GoPro | 27000 | 3 |
| 4 | iPhone SE | 50000 | 4 |
| 2 | iPhone 6 | 1000000 | 2 |
+----------+-------------+---------+----------+
7 rows in set (0.00 sec)
削除前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数のレコードが削除されます。
構文:
DELETE FROM テーブル [WHERE 条件]
ORDER BY カラム [ASC | DESC]
LIMIT 行数;
例えば、データベースtestのsalesテーブルに10件のレコードが格納されていて、priceの値が低い順に3件のレコードを削除する場合は以下のSQL文になります。
DELETE FROM test.sales ORDER BY price LIMIT 3;
実際に実行してみると以下のような結果になります。
削除前のデータ:
mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product | price | quantity |
+----------+-------------+---------+----------+
| 3 | WII | 4500 | 1 |
| 5 | PS3 | 10000 | 3 |
| 8 | G-SHOCK | 12000 | 8 |
| 9 | EXILIM | 14000 | 7 |
| 1 | PS4 | 20000 | 1 |
| 6 | COOLPIX | 23000 | 1 |
| 7 | amazon fire | 25000 | 6 |
| 10 | GoPro | 27000 | 3 |
| 4 | iPhone SE | 50000 | 4 |
| 2 | iPhone 6 | 1000000 | 2 |
+----------+-------------+---------+----------+
10 rows in set (0.01 sec)
DELETE文を実行:
mysql> DELETE FROM test.sales ORDER BY price LIMIT 3;
Query OK, 3 rows affected (0.08 sec)
削除後のデータ:
mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product | price | quantity |
+----------+-------------+---------+----------+
| 9 | EXILIM | 14000 | 7 |
| 1 | PS4 | 20000 | 1 |
| 6 | COOLPIX | 23000 | 1 |
| 7 | amazon fire | 25000 | 6 |
| 10 | GoPro | 27000 | 3 |
| 4 | iPhone SE | 50000 | 4 |
| 2 | iPhone 6 | 1000000 | 2 |
+----------+-------------+---------+----------+
7 rows in set (0.00 sec)
[2552] Posted by kagahiro at 2016/05/12 11:11:37
オープン | 1 point | Link (4) | Trackback (1) | Comment (0)
オープン | 1 point | Link (4) | Trackback (1) | Comment (0)
キーワード
MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する 関連リンク
SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) | |
「先頭からn件のレコード(結果セット)だけ取得する方法が知りたい。」というのは、データベース関連のメーリングなどで以前からよくある質問ですが、SQL ServerやOracle、MySQL、PostgreSQLなどRDBやバージョンによ... |
MySQL | |
MySQLとは、フィンランドのMichael Widenius氏よって開発された、オープンソースライセンスで配布されている高速性に重点を絞った軽快なRDBMSで、欧米などで広く普及している。MySQL AB によって開発、提供、サポート... |
MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する | |
MySQLでは、UPDATEでLIMIT句とORDER BYを使用して上位n件のレコードを更新することができます。更新前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数... |
MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する | |
MySQLでは、INSERT ... SELECTを使用することで1つまたは複数のテーブルからレコードをテーブルに追加できます。また、SELECTでLIMIT句とORDER BYを使用して上位n件のレコードのみテーブルに追加することもできます。... |
MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する トラックバック
トラックバックURL :
Linked from ネット掲示板 - ゴクBBS : SQL質問スレ at 2016/09/29 23:39:28 | |
このスレでは「こういうことをやりたいんだけどSQLでどう書くの?」「こういうSQLを書いたんだけどうまく動きません><」といった質問を受け付けています。SQLはISOによって標準化されていますが、標準を100%実装し... |
MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除するへのコメント
アクセスランキング
今日のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (127 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (14 PV)
- 人気ナンピンマーチンEA「NPNM_v3」向けサンプルセットファイル (10 PV)
- MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する (5 PV)
- ウェブページを1回だけリロード(再表示)する方法 (4 PV)
- MT4向けスキャルEA「TheWorld(ザワールド)」Free版(0.01ロット固定、無料、使用期限無し) (4 PV)
- 掲示板CGI ThreadPlus 1.0 のリリース (4 PV)
- [gcc]iconvで文字エンコードを変換するサンプルプログラム (4 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (4 PV)
- Google News (グーグルニュース)日本版 (4 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (542 PV)
- 人気ナンピンマーチンEA「NPNM_v3」向けサンプルセットファイル (101 PV)
- 掲示板CGI ThreadPlus 1.0 のリリース (57 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (57 PV)
- 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (42 PV)
- Google News (グーグルニュース)日本版 (31 PV)
- 無料の決済支援ツール「PositionKeeper」を使って楽々半自動スキャルピング #MT4 #MT5 (24 PV)
- MT4向けナンピンマーチンEA「PINMA FREE」を無料公開(ベースロット0.01固定) #自動売買 #FX (24 PV)
- [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (23 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (23 PV)
アクセス統計
ディレクトリ
関連サイト