테스트 사이트 - 개발 중인 베타 버전입니다

가장최근주문일 서브쿼리 질문합니다 채택완료

cho개발 5년 전 조회 1,076

mb_id별로 가장 최근주문일이 4월1일 이전인 mb_id를 추출하려고 하는데 밑에 sql문처럼 하니깐 오류가 발생하는데..

select mb_id from g5_shop_cart where (select max(ct_time) from g5_shop_cart group by mb_id) < '2020-04-01' group by mb_id;  

 

혹시 위에 sql문에서 어디를 수정해야 되나요.. 초보라서 잘 모르겠어요ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
5년 전

오류가 나신다면 오류내용을 같이 올려주셔야 도움이 되겠죠.

 

그냥 4월1일 이전 데이터에서 mb_id를 추출하며면 되는 거 아닌가요?

</p>

<p>select mb_id,max(ct_time) 

from g5_lshop_cart

where ct_time < '2020-04-01' 

group by mb_id</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 3개

c
cho개발
5년 전
만약 mb_id 1명이 1월1일,3월2일,4월14일 이렇게 주문일자가 있다고 하면 4월14일이 가장 최근 주문일자라서 4월1일 이전 조건을 넣었을때 mb_id가 안나와야되는데 ct_time < '2020-04-01' 이렇게 조건식을 넣으니 3월2일이 가장 최근주문일로 바껴서 나옵니다. mb_id가 추출이 됩니다.
그리고 서브쿼리 오류는 ERROR 1242 (21000): Subquery returns more than 1 row라고 나옵니다
닥시
5년 전
@cho개발
일단 오류는 서브쿼리에서 결과가 1 row가 아니고 여러개가 나온다는 거네요. where 조건에서 비교식은 양쪽 모두 1 레코드가 되어야 합니다.

4월1일 이후에 주문이 있으면 안 되는 거였군요. 조건에 이 조건을 추가하면 되겠네요.
[code]
select mb_id,max(ct_time)
from g5_shop_cart
where ct_time < '2020-04-01'
and mb_id not in(select mb_id from g5_shop_cart where ct_time >= '2020-04-01')
group by mb_id
[/code]
c
cho개발
5년 전
@닥시
와 맞네요.. not 을 포함시키면 되는데 괜히 어렵게 생각했네요
감사합니다!!

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인