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

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

QA

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

본문

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

답변을 작성하시기 전에 로그인 해주세요.
전체 116
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT