가장최근주문일 서브쿼리 질문합니다

가장최근주문일 서브쿼리 질문합니다

QA

가장최근주문일 서브쿼리 질문합니다

답변 1

본문

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

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

 

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


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

만약 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라고 나옵니다


일단 오류는 서브쿼리에서 결과가 1 row가 아니고 여러개가 나온다는 거네요.  where 조건에서 비교식은 양쪽 모두 1 레코드가 되어야 합니다.

4월1일 이후에 주문이 있으면 안 되는 거였군요. 조건에 이 조건을 추가하면 되겠네요.


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

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 6
© SIRSOFT
현재 페이지 제일 처음으로