SQL Server で MySQL の LIMIT 句相当の処理

MySQL では指定した件数のみ取得したい場合、LIMIT 句を使用する。


SELECT col_name FROM tbl_name WHERE condition ORDER BY order_rule LIMIT offset,row_count

SQL Server には LIMIT 句が存在しないので、同じ結果を取得したい場合は ROW_NUMBER() を用いる。


SELECT col_name FROM
(SELECT ROW_NUMBER() OVER(ORDER BY order_rule) AS rownum,* FROM tbl_name WHERE condition) AS tbl
WHERE rownum BETWEEN offset+1 AND offset+row_count ORDER BY rownum

offset がない場合は TOP を使えばよい。


SELECT TOP row_count col_name FROM tbl_name WHERE condition ORDER BY order_rule