【MySQL】 LIMIT ~ 出力する行数を制限する ~

■ LIMIT

 * 出力する行数を制限する
 * PostgreSQLでも使えるみたい

■ 構文

SELECT [項目1] (, ...)
FROM [テーブル名]
LIMIT ([開始位置(行数],) 取得する行数

■ サンプル

SELECT * FROM user LIMIT 5
出力結果
"1"	"1"	"Kim"	"1983-12-11"
"2"	"1"	"Mike"	"2018-02-02"
"3"	"1"	"Sam"	"1922-12-30"
"4"	"1"	"Smith"	"2006-07-14"
"5"	"1"	"Nancy"	"2003-08-19"

テストデータ

-- テーブル作成
CREATE TABLE IF NOT EXISTS `user` (
  `id` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
  `user_category` INT(11) DEFAULT 1,
  `name` VARCHAR(20) NULL DEFAULT NULL,
  `birthdate` DATE NULL DEFAULT NULL
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB;

-- テストデータ(REPLACE構文:ユニーク値が重複した場合、古いレコードを削除し、新しいレコードを挿入)
REPLACE INTO `user` (`id`, `user_category`, `name`, `birthdate`) VALUES
	(1, 1, 'Kim', '1983-12-11'),
	(2, 1, 'Mike', '2018-02-02'),
	(3, 1, 'Sam', '1922-12-30'),
	(4, 1, 'Smith', '2006-07-14'),
	(5, 1, 'Nancy', '2003-08-19'),
	(6, 1, 'Kachy', '2001-12-01'),
	(7, 2, 'Ken', '1936-05-10'),
	(8, 2, 'Coco', '1979-04-02'),
	(9, 2, 'Tom', '1999-03-17'),
	(10, 2, 'Son', '2000-09-22'),
	(11, 2, 'Tommy', '1929-05-02'),
	(12, 3, 'Carry', '1892-11-23'),
	(13, 3, 'Chan', '1977-11-03');

■ LIMITあれこれ

行数を制限したいが総行数を知りたい

 * 「SQL_CALC_FOUND_ROWS」と「FOUND_ROWS()」を使う
公式サイト
https://dev.mysql.com/doc/refman/5.6/ja/information-functions.html#function_found-rows
サンプル
SELECT SQL_CALC_FOUND_ROWS * FROM user LIMIT 5;
5行データが出力(略)

SELECT FOUND_ROWS();
13