https://school.programmers.co.kr/learn/courses/30/parts/17046
3개월만에 다시 푸니 너무 어려웠다!!!
join과 where 절을 같이 활용하는 문제는 항상 헷갈린다.
* 이슈사항
1. where 절에 in을 쓸때는 써브쿼리문에 limit 문이 먹히지 않는다!! syntax 오류남
그리고 where 절에 특정 컬럼이 있는지 in 을 쓸때는 서브쿼리에 반드시 그 컬럼을 포함한 여러 컬럼이 있어도 된다 ㅋ
즉
where member_id in (select member_id , count(*) as cnt, sum(sale) as sales ~~~~~~) 도 가능
-- 에러남 : where member_in (select~~~~ limit 1)
/* select
c1.member_name, c2.review_text,c2.review_date
from MEMBER_PROFILE as c1 inner join
rest_review as c2 on c1.member_id=c2.member_id
where member_id in
(select member_id, count(*) as review_count
from rest_review
group by member_id
order by count(*) DESC
limit 1)
ORDER BY REVIEW_DATE, REVIEW_TEXT */
-- SQL 실행 중 오류가 발생하였습니다.
-- This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
-- in 안에 limit를 쓸수 없다!!!!!
2. 따라서 해당 구문은 where 절에서 in 이 아닌 = 로 바꿔야 하며
특정 컬럼이 같다 이므로! 반드시 서브쿼리에는 그 특정 컬럼만이 존재해야한다!!!!
WHERE c1.member_id = (
select member_id
from rest_review
group by member_id
order by count(REVIEW_ID) DESC
limit 1)
SELECT c1.member_name, c2.review_text,date_format(c2.review_date, '%Y-%m-%d') as review_date_f
FROM MEMBER_PROFILE as c1 inner join rest_review as c2 on c1.member_id=c2.member_id
WHERE c1.member_id = (
select member_id
from rest_review
group by member_id
order by count(REVIEW_ID) DESC
limit 1)
order by date_format(c2.review_date, '%Y-%m-%d') , c2.review_text
'「SQL초급떼기' 카테고리의 다른 글
[프로그래머스sql고득점kit-level4]코딩테스트 연습JOIN5월 식품들의 총매출 조회하기 (0) | 2023.08.13 |
---|---|
[chat GPT]코호트분석 mysql(월별/주별, 6개월기간) (0) | 2023.07.30 |
[JOIN-LEVEL3]코딩테스트 연습JOIN있었는데요 없었습니다 (0) | 2023.07.28 |
[JOIN-LEVEL2]코딩테스트 연습JOIN조건에 맞는 도서와 저자 리스트 출력하기 (0) | 2023.07.28 |
코딩테스트 연습JOIN상품을 구매한 회원 비율 구하기(level 5)- chat GPT에게 물어봣더니... (0) | 2023.07.27 |
댓글