Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Python
- GIT
- 공룡게임
- MongoDB
- game
- nodejs
- 게임
- OCR
- flask
- Bull
- mongoose
- Sequelize
- MySQL
- react
- 정렬
- JavaScript
- Dinosaur
- Express
- cookie
- nestjs
- TypeScript
- typeORM
- class
- Queue
- jest
- dfs
- 자료구조
- AWS
- Nest.js
Archives
- Today
- Total
포시코딩
SubQuery 대신 LEFT JOIN 본문
728x90
SELECT
u.userIdx,
u.name,
(
SELECT
GROUP_CONCAT(c.name SEPARATOR ',')
FROM userCountries uc
JOIN country c
ON uc.countryIdx = c.countryIdx
WHERE uc.userIdx = u.userIdx
) AS countries
FROM users u
만약 국가 뿐 아니라 성격, 취미 등과 같은 테이블이 추가되어
위와 같이 계속해서 서브쿼리를 사용하게 되면 쿼리 성능이 안좋아지기 때문에 애초에 LEFT JOIN을 활용하는 방법을 사용한다.
SELECT
u.userIdx,
u.name,
GROUP_CONCAT(c.name SEPARATOR ',') AS countries
FROM users u
LEFT JOIN userCountries uc ON u.userIdx = uc.userIdx
LEFT JOIN country c ON uc.countryIdx = c.countryIdx
GROUP BY u.userIdx, u.name
기존 DB들에서 위 쿼리를 활용할만한 부분이 많기 때문에 따로 정리
728x90
'MySQL' 카테고리의 다른 글
[Docker] .sql backup file dump & restore database on docker MySQL and remote server (백업 복구) (0) | 2023.08.22 |
---|---|
[MySQL] 카페24 MySQL CLIENT_PLUGIN_AUTH is required 에러 (0) | 2023.08.21 |
[Docker] 컨테이너 DB 접속 (MySQL, MariaDB) (0) | 2023.08.18 |
[MySQL, MariaDB] sql_mode 문제 (ONLY_FULL_GROUP_BY 비활성화) (0) | 2023.08.16 |
mysqlsh 사용 방법 (0) | 2023.08.03 |