Search

LIMIT

LIMIT

MySQL ์—์„œ ์กฐํšŒ ๊ฒฐ๊ณผ ํ–‰์˜ ๊ฐœ์ˆ˜๋ฅผ ์ œํ•œํ•˜๋Š” ํ‚ค์›Œ๋“œ

LIMIT ๋ฌธ๋ฒ•

LIMIT ์˜คํ”„์…‹, ๊ฐœ์ˆ˜
SQL
๋ณต์‚ฌ
LIMIT ๊ฐœ์ˆ˜ OFFSET ์˜คํ”„์…‹
SQL
๋ณต์‚ฌ
์˜คํ”„์…‹์ด๋ž€?
: ์ œํ•œํ•  ๋ฒ”์œ„์˜ ์‹œ์ž‘ ์œ„์น˜๋ฅผ ์ง€์ •ํ•  ์ธ๋ฑ์Šค์ž…๋‹ˆ๋‹ค.

์ฒซ๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ 10๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ œํ•œ

SELECT * FROM board LIMIT 0, 10;
SQL
๋ณต์‚ฌ
LIMIT ํ‚ค์›Œ๋“œ๋Š” ํŽ˜์ด์ง€๋„ค์ด์…˜ ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ฃผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€๋„ค์ด์…˜ ์˜ˆ์‹œ ์ฝ”๋“œ

-- 1ํŽ˜์ด์ง€ (ํ•œ ํŽ˜์ด์ง€ ๋‹น 10๊ฐœ ๋ฐ์ดํ„ฐ) SELECT * FROM board LIMIT 0, 10; -- 5ํŽ˜์ด์ง€ (ํ•œ ํŽ˜์ด์ง€๋‹น 15๊ฐœ ๋ฐ์ดํ„ฐ) SELECT * FROM board LIMIT 60, 15;
SQL
๋ณต์‚ฌ

ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ

ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ์š”์†Œ

ํ•ญ๋ชฉ
์„ค๋ช…
page
ํ˜„์žฌ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
rows
ํŽ˜์ด์ง€๋‹น ๊ฒŒ์‹œ๊ธ€ ์ˆ˜ (ํ•œ ํŽ˜์ด์ง€์— 10๊ฐœ, 15๊ฐœ โ€ฆ)
count
๋…ธ์ถœ ํŽ˜์ด์ง€ ๊ฐœ์ˆ˜ (ํ•œ ๋ฒˆ์— ํ‘œ์‹œํ•  ํŽ˜์ด์ง€ ๊ทธ๋ฃน ์ˆ˜)
total
์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ (์ „์ฒด ๋ฐ์ดํ„ฐ์˜ ์ด ๊ฐœ์ˆ˜)
start
์‹œ์ž‘ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ทธ๋ฃน์—์„œ ์‹œ์ž‘ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ)
end
๋ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (ํ˜„์žฌ ํŽ˜์ด์ง€ ๊ทธ๋ฃน์—์„œ ๋ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ)
first
์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (ํ•ญ์ƒ 1๋กœ ๊ณ ์ •)
last
๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜์— ๋”ฐ๋ฅธ ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ)
prev
์ด์ „ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (ํ˜„์žฌ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ - 1)
next
๋‹ค์Œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (ํ˜„์žฌ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ + 1)
index
๋ฐ์ดํ„ฐ ์ˆœ์„œ ๋ฒˆํ˜ธ (ํŽ˜์ด์ง€์— ํ•ด๋‹นํ•˜๋Š” ๋ฐ์ดํ„ฐ ์‹œ์ž‘ ์ธ๋ฑ์Šค)

ํŽ˜์ด์ง• ์ฒ˜๋ฆฌ ๊ณต์‹

ํ•ญ๋ชฉ
๊ณต์‹
์„ค๋ช…
first
ํ•ญ์ƒ 1
์ฒซ ๋ฒˆ์งธ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
last
(total - 1) / rows + 1
์ „์ฒด ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๊ณ„์‚ฐํ•œ ๋งˆ์ง€๋ง‰ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
start
((page - 1) / count) * count + 1
ํŽ˜์ด์ง€ ๊ทธ๋ฃน ๋‚ด์—์„œ ์‹œ์ž‘ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
end
((page - 1) / count + 1) * count
ํŽ˜์ด์ง€ ๊ทธ๋ฃน ๋‚ด์—์„œ ๋ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
prev
page - 1
์ด์ „ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
next
page + 1
๋‹ค์Œ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ
index
(page - 1) * rows
๋ฐ์ดํ„ฐ ์‹œ์ž‘ ์ธ๋ฑ์Šค (ํŽ˜์ด์ง•๋œ ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ)

๊ฒŒ์‹œํŒ ์ƒ˜ํ”Œ ๋ฐ์ดํ„ฐ

ํ…Œ์ด๋ธ” ์ƒ์„ฑ

DROP TABLE IF EXISTS board; CREATE TABLE board ( no INT AUTO_INCREMENT PRIMARY KEY COMMENT 'PK', id VARCHAR(64) NOT NULL UNIQUE COMMENT 'UK', title VARCHAR(255) NOT NULL COMMENT '์ œ๋ชฉ', writer VARCHAR(100) NOT NULL COMMENT '์ž‘์„ฑ์ž', content TEXT NOT NULL COMMENT '๋‚ด์šฉ', created_at DATETIME DEFAULT CURRENT_TIMESTAMP COMMENT '์ž‘์„ฑ์ผ', updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '์ˆ˜์ •์ผ' ) COMMENT '๊ฒŒ์‹œํŒ';
SQL
๋ณต์‚ฌ

๋ฐ์ดํ„ฐ 1,000๊ฑด ์ถ”๊ฐ€

TRUNCATE TABLE board; INSERT INTO board (id, title, writer, content) SELECT CONCAT('id_', LPAD(ROW_NUMBER() OVER (ORDER BY seq), 4, '0')) AS id, CONCAT('Sample Title ', seq) AS title, CONCAT('Writer ', seq) AS writer, CONCAT('This is the content for sample data number ', seq, '.') AS content FROM ( SELECT @rownum := @rownum + 1 AS seq FROM (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t1, (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t2, (SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) t3, (SELECT @rownum := 0) t4 LIMIT 1000 ) seq_table;
SQL
๋ณต์‚ฌ