본문으로 바로가기
COMMUNITY모든 이야기

사용자별로 가장 최근에 주문한 상품명을 가져오려고 하는데, 쿼리를 짜면 자꾸 에러가 나거나 엉뚱한 값이 나와서 고생 중입니다.

코드:

CREATE TABLE users (id INT, name VARCHAR(20));
CREATE TABLE orders (id INT, user_id INT, product_name VARCHAR(20), order_date DATE);

INSERT INTO users VALUES (1, '김철수'), (2, '이영희');
INSERT INTO orders VALUES (1, 1, '마우스', '2023-01-01'), (2, 1, '키보드', '2023-05-01'), (3, 2, '모니터', '2023-02-01');

SELECT user_id, product_name, MAX(order_date)
FROM orders
GROUP BY user_id;

오류: Column 'orders.product_name' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

시도: GROUP BY에 product_name을 추가해봤는데 그러면 데이터가 중복으로 나와서 원하는 결과가 아니었습니다.

질문: 최신 주문 날짜에 해당하는 상품명만 정확하게 매칭해서 가져오려면 쿼리를 어떻게 수정해야 하나요?

모든 이야기1478

가벼운 안부부터 깊은 생각까지, 함께 나눠요.

글쓰기
총 1478개의 이야기
댓글