๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋ชฉ๋ก์ด ์—†์Šต๋‹ˆ๋‹ค.

[MySQL/MariaDB] ํŠน์ • ์ปฌ๋Ÿผ์˜ ํŠน์ • ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ (๋‚ด๋ง˜๋Œ€๋กœ ์ •๋ ฌํ•˜๊ธฐ)

๐Ÿ›ข DB/MySQL
    ๋ฐ˜์‘ํ˜•

    ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด DB์—์„œ ์กฐํšŒ๋ฅผ ํ•  ๋•Œ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ๊ตฌ์ฒด์ ์œผ๋กœ ๋งํ•˜์ž๋ฉด ํŠน์ • ํ•„๋“œ์˜ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ์„ ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ ORDER BY ์ ˆ์— FIELD๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

     


    ORDER BY FIELD

    ์˜ˆ๋ฅผ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ์˜ ํ…Œ์ด๋ธ” TB_EXAMPLE์ด ์žˆ๋‹ค๊ณ  ๊ฐ€์ •์„ ํ•ด๋ด…๋‹ˆ๋‹ค.

     

    TB_EXAMPLE
    
    SEQ,
    NAME,
    STATUS

    ๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

    (1, 'TEST1', 'ST01')
    (2, 'TEST2', 'ST01')
    (3, 'TEST3', 'ST01')
    (4, 'TEST4', 'ST03')
    (5, 'TEST5', 'ST02')
    (6, 'TEST6', 'ST01')

     

    ์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ ๋ณดํ†ต STATUS๋ผ๋Š” ์ปฌ๋Ÿผ์„ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•˜๋Š” ๊ฒฝ์šฐ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ฟผ๋ฆฌ๋ฅผ ๋˜์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

     

    SELECT
    	SEQ,
        NAME,
        STATUS
    FROM TB_EXAMPLE
    ORDER BY STATUS DESC
    (4, 'TEST4', 'ST03')
    (5, 'TEST5', 'ST02')
    (1, 'TEST1', 'ST01')
    (2, 'TEST2', 'ST01')
    (3, 'TEST3', 'ST01')
    (6, 'TEST6', 'ST01')

     

    ๊ทธ๋Ÿฐ๋ฐ ๋งŒ์•ฝ์— ST03๋ณด๋‹ค ST02๊ฐ€ ๋จผ์ € ๋‚˜์™”์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๋ฐ”๋กœ FIELDํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด์„œ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

    SELECT
    	SEQ,
        NAME,
        STATUS
    FROM TB_EXAMPLE
    ORDER BY
        FIELD(STATUS, 'ST03', 'ST02') DESC,
        STATUS ASC

    FIELD์˜ ์ฒซ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ •๋ ฌํ•  ์ปฌ๋Ÿผ์„ ๋„ฃ๊ณ  ๊ทธ ๋’ค์— ์ •๋ ฌํ•  ๊ฐ’์„ ์—ญ์ˆœ์œผ๋กœ ๋„ฃ์–ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

    (5, 'TEST5', 'ST02')
    (4, 'TEST4', 'ST03')
    (1, 'TEST1', 'ST01')
    (2, 'TEST2', 'ST01')
    (3, 'TEST3', 'ST01')
    (6, 'TEST6', 'ST01')

    ์›๋ฆฌ๋Š” FIELD ํ‚ค์›Œ๋“œ๋Š” ์ฒซ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์„ ๊ธฐ์ค€ ์ปฌ๋Ÿผ์œผ๋กœ ์ธ์‹ํ•˜๊ณ  ๊ทธ ๋’ค์— ์˜ค๋Š” ๊ฐ’๋“ค์„ ์ปฌ๋Ÿผ์˜ ๊ฐ’์œผ๋กœ ๋น„๊ตํ•˜์—ฌ ํ•ด๋‹น ํŒŒ๋ผ๋ฏธํ„ฐ ๊ฐ’์ด ๋ช‡๋ฒˆ์งธ ์ธ์ง€ index๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์œ„์— ์ฟผ๋ฆฌ๋กœ๋Š” ST03๋Š” ์ปฌ๋Ÿผ ๋ฐ”๋กœ ๋’ค์— ์˜ค๊ธฐ ๋•Œ๋ฌธ์— 1์ด ๋ฐ˜ํ™˜๋˜๊ณ  ST02๋Š” ๊ทธ ๋’ค์— ์˜ค๊ธฐ ๋–„๋ฌธ์— 2๊ฐ€ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€๋Š” ๊ฐ’์ด ํ•ด๋‹น๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— 0์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’๋“ค์„ ์—ญ์ •๋ ฌ(DESC)ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ST02๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ๋‚˜์˜ค๊ฒŒ ๋˜๊ณ  ๊ทธ ๋’ค๋กœ ST03 ๊ทธ๋ฆฌ๊ณ  ST01์ด ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

     

    ์ด ์ƒํƒœ์—์„œ ๋’ค์— STATUS ASC ๋ฅผ ์ถ”๊ฐ€ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‚˜๋จธ์ง€๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ์ด ๋ฉ๋‹ˆ๋‹ค.

     

    ์ฐธ๊ณ 

    ๋ธ”๋กœ๊ทธ

     

    ๋ฐ˜์‘ํ˜•