๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

SQLD

1๊ณผ๋ชฉ ๋ฐœ์ƒ์‹œ์ ์— ๋”ฐ๋ฅธ ์—”ํ‹ฐํ‹ฐ ๋ถ„๋ฅ˜ ๊ธฐ๋ณธ/ํ‚ค์—”ํ‹ฐํ‹ฐ : ๋‹ค๋ฅธ ์—”ํ„ฐํ‹ฐ๋กœ๋ถ€ํ„ฐ ์ฃผ์‹๋ณ„์ž๋ฅผ ์ƒ์†๋ฐ›์ง€ ์•Š๊ณ  ์ž์‹ ์˜ ๊ณ ์œ ํ•œ ์ฃผ์‹๋ณ„์ž๋ฅผ ๊ฐ€์ง€๋ฉฐ ์‚ฌ์›, ๋ถ€์„œ, ๊ณ ๊ฐ, ์ƒํ’ˆ, ์ž์žฌ ๋“ฑ์ด ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์—”ํ„ฐํ‹ฐ ์ค‘์‹ฌ์—”ํ‹ฐํ‹ฐ ํ–‰์œ„์—”ํ‹ฐํ‹ฐ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์ด๋ž€ ์ •๋ณด์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ๊ด€์ ์˜ ์—…๋ฌด ๋ถ„์„ ๊ธฐ๋ฒ• ํ˜„์‹ค์„ธ๊ณ„์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์•ฝ์†๋œ ํ‘œ๊ธฐ๋ฒ•์— ์˜ํ•ด ํ‘œํ˜„ํ•˜๋Š” ๊ณผ์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•œ ๋ถ„์„/์„ค๊ณ„์˜ ๊ณผ์ • ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง ์œ ์˜์  ์ค‘๋ณต ๋น„์œ ์—ฐ์„ฑ : ๋ฐ์ดํ„ฐ์˜ ์ •์˜์™€ ๋ฐ์ดํ„ฐ์˜ ์‚ฌ์šฉ ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ถ„๋ฆฌ ๋น„์ผ๊ด€์„ฑ ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง์€ DB๊ตฌ์ถ•ํ•˜๊ธฐ๋งŒ์„ ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋ธ๋ง ์ž์ฒด๋กœ์„œ ์—…๋ฌด๋ฅผ ์„ค๋ช…ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š”๋ฐ ์ค‘์š”ํ•œ ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค ๊ฐœ๋…์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง : ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ๋†’๊ณ  ์—…๋ฌด์ค‘์‹ฌ์ ์ด๊ณ  ํฌ๊ด„์ ์ธ ์ˆ˜์ค€์˜ ๋ชจ๋ธ๋ง ์ง„ํ–‰. ์ „์‚ฌ์  ๋ฐ์ดํ„ฐ ๋ชจ๋ธ..

๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

[MySQL] ์ตœ์ƒ์œ„ ๋ ˆ์ฝ”๋“œ ํ•˜๋‚˜ ๊ฐ€์ ธ์˜ค๊ธฐ

order by์™€ limit์„ ํ™œ์šฉ SELECT name from animal_ins order by datetime limit 1;

๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

[MySQL] union๊ณผ join์˜ ์ฐจ์ด

Union์€ ํ…Œ์ด๋ธ”์„ ์ˆ˜์ง ๋ฐฉํ–ฅ์œผ๋กœ ํ•ฉ์นœ๋‹ค ์ด๋•Œ union์€ ์ค‘๋ณต row๋ฅผ ์ œ๊ฑฐํ•˜์ง€๋งŒ, union all ์€ ์ค‘๋ณต row๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š๋Š”๋‹ค. Join์€ ํ…Œ์ด๋ธ”์„ ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์œผ๋กœ ํ•ฉ์นœ๋‹ค ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค sql ๋ฌธ์ œ ์ค‘ " ์˜คํ”„๋ผ์ธ/์˜จ๋ผ์ธ ํŒ๋งค ๋ฐ์ดํ„ฐ ํ†ตํ•ฉํ•˜๊ธฐ" ๋ฌธ์ œ์—์„œ Union์„ ์‚ฌ์šฉํ–ˆ๋‹ค. ONLINE_SALE ํ…Œ์ด๋ธ” OFFLINSE_SALE ํ…Œ์ด๋ธ” ONLINE_SALE ํ…Œ์ด๋ธ”๊ณผ OFFLINE_SALE ํ…Œ์ด๋ธ”์—์„œ 2022๋…„ 3์›”์˜ ์˜คํ”„๋ผ์ธ/์˜จ๋ผ์ธ ์ƒํ’ˆ ํŒ๋งค ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•˜๋Š” ๋ฌธ์ œ์˜€๋‹ค. (OFFLINE_SALE ํ…Œ์ด๋ธ”์˜ USER_ID๊ฐ’์€ NULL ๋กœ ํ‘œ์‹œํ•˜๋ผ๋Š” ์กฐ๊ฑด์ด ์žˆ์—ˆ๋‹ค.) ๋‘ ํ…Œ์ด๋ธ”์˜ ๊ฒฐ๊ณผ๋ฅผ ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด UNION์„, ์˜คํ”„๋ผ์ธ ํ…Œ์ด๋ธ”์˜ USER_ID๋ฅผ NULL ๋กœ ๋‚˜ํƒ€๋‚ด๊ธฐ ์œ„ํ•ด NULL as user_id..

๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

[MySQL] GROUP BY ... HAVING COUNT(*)

๐Ÿ’ก์•Œ๊ฒŒ๋œ ์  : GROUP BY์˜ HAVING ์กฐ๊ฑด์— COUNT(*) ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ…Œ์ด๋ธ”์—์„œ, ๋™์ผํ•œ ํšŒ์›(USER_ID)์ด ๋™์ผํ•œ ์ƒํ’ˆ(PRODUCT_ID)์„ ์žฌ๊ตฌ๋งคํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌํ•˜๋ ค๋ฉด SELECT USER_ID, PRODUCT_ID, COUNT(*) FROM ONLINE_SALE GROUP BY USER_ID, PRODUCT_ID HAVING COUNT(*) >= 2; ์™€ ๊ฐ™์ด ํ•˜๋ฉด ๋œ๋‹ค. ์‹คํ–‰๊ฒฐ๊ณผ

๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB

[MySQL] not a GROUP BY expression

group by์— ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด select ์ ˆ์—์„œ ์ง‘๊ณ„ํ•จ์ˆ˜๋ฅผ ์“ฐ๋Š” ์ปฌ๋Ÿผ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ปฌ๋Ÿผ์€ group by ์˜ ์ธ์ž๋กœ ์จ์ค˜์•ผ ํ•จ! SELECT I.REST_ID, I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS, ROUND(AVG(R.REVIEW_SCORE),2) SCORE FROM REST_INFO AS I JOIN REST_REVIEW AS R ON I.REST_ID=R.REST_ID WHERE I.ADDRESS LIKE '์„œ์šธ%' GROUP BY I.REST_ID , I.REST_NAME, I.FOOD_TYPE, I.FAVORITES, I.ADDRESS ORDER BY SCORE desc, I.FAVORITES DESC; ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์„œ์šธ์— ์œ„์น˜ ์‹..

mc.thd
'๐Ÿ“–๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค:DB' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก