Database/MySQL

[MySQL]GROUP_CONCAT()๊ณผ FIND_IN_SET()

sukii 2025. 5. 20. 19:30
๋ฐ˜์‘ํ˜•

๐Ÿ‘จ‍๐Ÿ’ป MySQL์—์„œ GROUP_CONCAT๊ณผ FIND_IN_SET ํ™œ์šฉํ•˜๊ธฐ

๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ƒ๊ธด๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์‹ค๋ฌด์—์„œ ๋…ผ๋ฌธ์˜ ํŽ˜์ด์ง€ ์ •๋ณด๋ฅผ ํ•œ ์ปฌ๋Ÿผ์— ํŒŒ์ดํ”„(|)๋กœ ๊ตฌ๋ถ„ํ•œ ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•ด์•ผ` ํ–ˆ์—ˆ๋‹ค.

์ด๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” SQL ํ•จ์ˆ˜๊ฐ€ GROUP_CONCAT()๊ณผ FIND_IN_SET()์ด๋‹ค.

 


1๏ธโƒฃ GROUP_CONCAT() ํ•จ์ˆ˜

GROUP_CONCAT()์€ ์—ฌ๋Ÿฌ ํ–‰์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ํ•ฉ์น˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.
๊ธฐ๋ณธ์ ์œผ๋กœ ๊ฐ ํ–‰์˜ ๊ฐ’์„ ์ฝค๋งˆ(,)๋กœ ์—ฐ๊ฒฐํ•ด์„œ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ ๋‹ค.

SELECT GROUP_CONCAT(column_name ORDER BY column_name SEPARATOR ', ') FROM table_name;
  • ORDER BY column_name: ์ •๋ ฌ ๊ธฐ์ค€์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • SEPARATOR ', ' : ๊ธฐ๋ณธ ๊ตฌ๋ถ„์ž๋Š” ,์ด์ง€๋งŒ, |, -, : ๋“ฑ์œผ๋กœ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋‹ค.

 

2๏ธโƒฃ FIND_IN_SET() ํ•จ์ˆ˜

FIND_IN_SET()์€ ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๊ฐ’์„ ์ฐพ์„ ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

SELECT FIND_IN_SET('๊ฒ€์ƒ‰ํ•  ๊ฐ’', '๊ฐ’1,๊ฐ’2,๊ฐ’3');

โ—พ ๋ฐ˜ํ™˜ ๊ฐ’

  • ๊ฐ’1,๊ฐ’2,๊ฐ’3 ์ค‘ '๊ฒ€์ƒ‰ํ•  ๊ฐ’'์ด ๋ช‡ ๋ฒˆ์งธ ์œ„์น˜์— ์žˆ๋Š”์ง€ ์ˆซ์ž๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
  • ๊ฐ’์ด ์—†์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๐Ÿ“Œ ์˜ˆ์ œ

SELECT FIND_IN_SET('B', 'A,B,C,D');
-- ๊ฒฐ๊ณผ: 2 (B๋Š” ๋‘ ๋ฒˆ์งธ ์œ„์น˜)
SELECT FIND_IN_SET('E', 'A,B,C,D');
-- ๊ฒฐ๊ณผ: 0 (E๋Š” ์—†์Œ)SELECT FIND_IN_SET('E', 'A,B,C,D');

 

 

3๏ธโƒฃ ์‹ค๋ฌด ์˜ˆ์‹œ

๋‚˜๋Š” GROUP_CONCAT()์€ ์‚ฌ์šฉํ–ˆ์œผ๋‚˜,  FIND_IN_SET() ํ•จ์ˆ˜๋Š” ์ฝค๋งˆ(,)๋กœ ๊ตฌ๋ถ„๋œ ๋ฌธ์ž์—ด๋งŒ ์ธ์‹ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๊ณ , split() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํŒŒ์‹ฑํ–ˆ๋‹ค.

 

๐Ÿ“Œ ์˜ˆ์‹œ

String pageInfo = "123-130|145-150|200-210";

// ํŒŒ์ดํ”„(|) ๊ธฐ์ค€์œผ๋กœ split
String[] pages = pageInfo.split("\\|");

for (String page : pages) {
    System.out.println("ํŽ˜์ด์ง€ ๋ฒ”์œ„: " + page);
}

 

 

4๏ธโƒฃ GROUP_CONCAT + FIND_IN_SET ์–ธ์ œ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์„๊นŒ?

โœ” ํ•˜๋‚˜์˜ ์ปฌ๋Ÿผ์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ €์žฅํ•ด์•ผ ํ•  ๋•Œ

  • ์˜ˆ: ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ด€์‹ฌ ์นดํ…Œ๊ณ ๋ฆฌ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒฝ์šฐ.

โœ” ์ฝค๋งˆ๋กœ ๊ตฌ๋ถ„๋œ ๊ฐ’์—์„œ ํŠน์ • ํ•ญ๋ชฉ์„ ์ฐพ์„ ๋•Œ

  • ์˜ˆ: A,B,C,D์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ๊ฐ’์ด ํฌํ•จ๋˜์—ˆ๋Š”์ง€ ๊ฒ€์ƒ‰.

โœ” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ํ•˜๋‚˜์˜ ๋ฌธ์ž์—ด๋กœ ๋ฌถ์–ด์„œ ์ถœ๋ ฅํ•˜๊ณ  ์‹ถ์„ ๋•Œ

  • ์˜ˆ: GROUP_CONCAT()์„ ์‚ฌ์šฉํ•ด Music, Sports์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜๋กœ ํ•ฉ์น  ๋•Œ.
๋ฐ˜์‘ํ˜•