データ処理の件数を制限する
データを1件だけSelectやDeleteしたいときの書き方。
-- SQLServer SELECT TOP(1) * FROM `table` ORDER BY `column`; DELETE TOP(1) FROM `table` ORDER BY `column`; -- MySQL SELECT * FROM `table` ORDER BY `column` LIMIT 1 DELETE FROM `table` ORDER BY `column` LIMIT 1
SQLServerの方はどうやら「TOP 1」という表記でもよい模様?(※未確認)
実務で使っていたときはTOP(1)と書く現場だったのでそう書いてますし、その方が見やすいかなーと思ってますが。
また、「○件目から○件取得」の書き方もあります。
MySQLでは、「LIMIT [開始位置 ※0から], [件数]」でOKです。
-- MySQL -- 1件目から10件取得 SELECT * FROM `table` ORDER BY `column` LIMIT 0, 10 -- 21件目から10件取得 SELECT * FROM `table` ORDER BY `column` LIMIT 20, 10
そういえばSQLServerでそういう使い方したことないなーと思い調べてみたらこんな記事が。
参考:SQL ServerでSELECT文の取得件数を制限し、任意の件数を取得する - 俺の開発研究所
http://itmemo.net-luck.com/sql-server-select-limit/
ま、まじですか…。場合によってはなかなかに重たそう。