๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ“š ์‹œ๋ฆฌ์ฆˆ/- ์ดˆ๋ณด์ž๋„ ์ค€๋น„ํ•˜๋Š” SQL ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ

[์ดˆ๋ณด์ž๋„ ์ค€๋น„ํ•˜๋Š” SQL ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ] LIMIT๊ณผ ์„œ๋ธŒ ์ฟผ๋ฆฌ์— ๋Œ€ํ•˜์—ฌ

by Wonit 2021. 2. 25.

์นดํ…Œ๊ณ ๋ฆฌ ์ดˆ๋ณด์ž๋„ ์ค€๋น„ํ•˜๋Š” SQL ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ๊ฐ€์‹œ๋ฉด ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชฉ์ฐจ

  • LIMIT
    • ์ถœ๋ ฅ ์ œํ•œํ•˜๊ธฐ
    • OFFSET
  • ์„œ๋ธŒ ์ฟผ๋ฆฌ
    • ANY
    • SOME
    • ALL

LIMIT

์šฐ๋ฆฌ๊ฐ€ ์šฐ๋ฆฌ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ๋ž‘ํ•œ๋‹ค๋ฉด LIMIT๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ํ•„์ˆ˜์ด๋‹ค.

 

LIMIT์„ ์ด์šฉํ•ด์„œ ์šฐ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—๊ฒŒ ๋ถ€๋‹ด์„ ์ค„์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด 1์–ต๊ฐœ์˜ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž.

 

1์–ต๊ฐœ์˜ ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ์—์„œ ์‚ฌ์šฉ์ž ํ‚ค ๋งŒํผ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•˜๊ณ  ๋ณด๊ณ ์‹ถ๋‹ค๊ณ  ํ•˜๋ฉด

 

SELECT name, height
FROM usertb1
ORDER BY height ASC;

์šฐ๋ฆฌ๋Š” ์ง€๋‚œ ์‹œ๊ฐ„ SELECT๋ฅผ ๋งˆ์Šคํ„ฐํ–ˆ์œผ๋‹ˆ ์ด์ •๋„๋Š” ์‰ฝ๋‹ค.

 

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š”๋Œ€๋กœ 1์–ต๋ช…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ถœ๋ ฅํ–ˆ๋‹ค.


๊ทผ๋ฐ 1์–ต๊ฐœ๋ฅผ ๋‹ค ๋ณด๋Š”๊ฑด ๋ฌด๋ฆฌ๊ณ , ์ƒ์œ„ 10๋ช…๋งŒ ๋ณด๊ณ ์‹ถ๋‹ค๋ฉด ์–ด๋–กํ• ๊นŒ?

 

1์–ต๊ฐœ๋ฅผ ๋‹ค ๋ถˆ๋Ÿฌ์™€์„œ 10๋ช…๋งŒ ๋ณผ๊นŒ?


๊ทธ๋Ÿผ ๋‚˜๋จธ์ง€ 99,999,990 ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋Š” ๊ดœํžˆ ๋ถˆ๋Ÿฌ์˜จ ๊ฒƒ์ด๋‹ค.

 

์ด๋Ÿด ๋•Œ ๋ฐ”๋กœ LIMIT์„ ์‚ฌ์šฉํ•œ๋‹ค.

์ถœ๋ ฅ ์ œํ•œํ•˜๊ธฐ

SELECT ํ•„๋“œ๋ช…
FROM ํ…Œ์ด๋ธ”๋ช…
LIMIT ์ œํ•œํ•  ๊ฐฏ์ˆ˜

๊ทธ๋Ÿผ ์•„๊นŒ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋˜ 1์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ์—์„œ ์ƒ์œ„ 5๋ช…์˜ ํ‚ค๋ฅผ ์ •๋ ฌํ•œ๋‹ค๋ฉด?

 

SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 5;

์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด ์ƒ์œ„ 5๊ฐœ๋งŒ ์ถœ๋ ฅ! ๊ณผ ๊ฐ™์€ ๋ง์ด ๋œ๋‹ค.

OFFSET

์—ฌ๊ธฐ์„œ ๋‚ด์นœ๊น€์— ๋” ๊ฐ€๋ณด์ž.

 

1์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ์—์„œ 5๋ฒˆ์งธ ๋ฐ์ดํ„ฐ ๋ถ€ํ„ฐ +3๋ฒˆ์งธ ๋ฐ์ดํ„ฐ์˜ ํ‚ค,


1์–ต๊ฐœ์˜ ๋ฐ์ดํ„ฐ์—์„œ 100๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ถ€ํ„ฐ +13๋ฒˆ์จฐ ๋ฐ์ดํ„ฐ์˜ ํ‚ค

 

์™€ ๊ฐ™์ด ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€๋ฅผ OFFSET์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋”ฐ.

 

SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 5 OFFSET 3;

ํ˜น์€ ์ด๋ฅผ ๋” ์ค„์—ฌ์„œ

SELECT name, height
FROM usertb1
ORDER BY height ASC
LIMIT 3, 5;

์ด๋ ‡๊ฒŒ ๋œ๋‹ค๋ฉด 3๋ฒˆ์จฐ ์˜คํ”„์…‹๋ถ€ํ„ฐ 5๊ฐœ๋ฅผ LIMIT์™€ ๊ฐ™์€ ๋ง์ด ๋œ๋‹ค.

์„œ๋ธŒ ์ฟผ๋ฆฌ

์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ์ฟผ๋ฆฌ ์•ˆ์— ์ฟผ๋ฆฌ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด๋ณด์ž.

 

๋งŒ์•ฝ ์šฐ๋ฆฌ์˜ usertb์— ์‚ฌ์šฉ์ž ์ด๋ฆ„๊ณผ ํ‚ค๊ฐ€ ์žˆ๋‹ค๊ณ  ํ–ˆ์„ ๋•Œ, ํŠน์ • ์ธ๋ฌผ์˜ ํ‚ค๋ณด๋‹ค ํฐ ์‚ฌ๋žŒ๋“ค์„ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ๋‹ค.

 

๊ทธ๋Ÿผ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ๊นŒ?

  1. ์šฐ์„  WHERE์„ ํ†ตํ•ด ํŠน์ • ์ธ๋ฌผ์˜ ํ‚ค๋ฅผ ์ฐพ๋Š”๋‹ค.
  2. WHERE์„ ํ†ตํ•ด ํŠน์ • ์ธ๋ฌผ์˜ ํ‚ค๋ฅผ ์กฐ๊ฑด์œผ๋กœ ์ค€๋‹ค.

ํ•ด๋ณด์ž

์šฐ์„  WHERE์„ ํ†ตํ•ด ํŠน์ • ์ธ๋ฌผ์˜ ํ‚ค๋ฅผ ์ฐพ๋Š”๋‹ค.

SELECT name, height
FROM usertb1
WHERE name = '์žฅ์›์ต';

๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๋กœ ์žฅ์›์ต๊ณผ 183์ด ๋‚˜์˜จ๋‹ค.

 

WHERE์„ ํ†ตํ•ด ํŠน์ • ์ธ๋ฌผ์˜ ํ‚ค๋ฅผ ์กฐ๊ฑด์œผ๋กœ ์ค€๋‹ค.

SELECT name, height
FROM usertb1
WHERE height >= 183;

์•„ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ด๋‹ค.

 

์ด ๋•Œ ๋ฐ”๋กœ ์„œ๋ธŒ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์„œ๋ธŒ์ฟผ๋ฆฌ๋Š” ์ฟผ๋ฆฌ๋ฌธ ์•ˆ์— ์ฟผ๋ฆฌ๋ฌธ์ด ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

 

์œ„์˜ ๋”๋Ÿฝ๊ณ  ์•„์ฃผ ๋น„ํšจ์œจ์ ์ธ ์ฟผ๋ฆฌ๋ฌธ์„ ์„œ๋ธŒ์ฟผ๋ฆฌ๋กœ ๋งŒ๋“ค๋ฉด

SELECT name, height
FROM usertb1
WHERE height >= (select height from usertb1 where name = '์žฅ์›์ต');

์—ฌ๊ธฐ์„œ ์ฃผ์˜ํ•ด์•ผํ•  ์ ์ด ์žˆ๋‹ค.


์„œ๋ธŒ ์ฟผ๋ฆฌ๋Š” ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ ๋ฐ˜ํ™˜ํ•  ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํ™ฉ

SELECT name, height
FROM usertb1
WHERE height >= (select height from usertb1 where name = '์žฅ์›์ต' or name = '๊น€ํ˜ธ์ค‘');

์ง€๊ธˆ ์ด๊ฒŒ ์•ˆ๋˜๋Š” ์ด์œ ๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ๊ฐ€ 2๊ฐœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์กฐ๊ฑด์— ๋งž์ถฐ์•ผํ• ์ง€ ๋ชจ๋ฅธ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์ด ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๋“ค์ด ๋ฐ”๋กœ ANY์™€ ALL, SOME์ด๋‹ค.

ANY / SOME : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ OR

ANY๋Š” ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ฐ˜ํ™˜๋“ค ์ค‘ ํ•˜๋‚˜๋ผ๋„ ํ•ด๋‹นํ•œ๋‹ค๋ฉด ๋˜๋Š” OR์ด๋‹ค.

 

SELECT name, height
FROM usertb1
WHERE height >= ANY (select height from usertb1 where name = '์žฅ์›์ต' or name = '๊น€ํ˜ธ์ค‘');

๊ณผ ๊ฐ™์ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค.

ALL : ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ AND

ALL์€ ์„œ๋ธŒ ์ฟผ๋ฆฌ์˜ ๋ฐ˜ํ™˜๋“ค ์ค‘ ๋ชจ๋‘ํ•ด๋‹น๋˜๋Š” AND์™€ ๊ฐ™์€ ๋ง์ด๋‹ค.

SELECT name, height
FROM usertb1
WHERE height >= ALL (select height from usertb1 where name = '์žฅ์›์ต' or name = '์†ํฅ๋ฏผ');

์นดํ…Œ๊ณ ๋ฆฌ ์ดˆ๋ณด์ž๋„ ์ค€๋น„ํ•˜๋Š” SQL ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ์— ๊ฐ€์‹œ๋ฉด ํ•ด๋‹น ์‹œ๋ฆฌ์ฆˆ๋ฅผ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€