728x90
반응형
Error 코드
Error Code: 1140. In aggregated query without GROUP BY, expression #1 of SELECT list contains nonaggregated column %%% this is incompatible with sql_mode=only_full_group_by 0.000 sec
이 오류는 여러 행에 집계 값을 포함하려고 할 때 발생할 수 있습니다. 예를 들어, 행 그룹 내의 모든 행의 소계를 반환하려고 할 수 있습니다. 윈도우 함수는 이러한 결과를 얻는 데 도움이 될 수 있습니다.
첫번째 해결책 . 윈도우 함수
select `orderProduct`, `orderId`,sum(orderCount) as `총 주문수량`
from `Order`
order by `orderProduct`asc;
여기, 제 목록의 마지막 열이 SELECT문제를 일으키고 있습니다. 저는 SUM()집계 함수를 사용하여 각 구역 내의 모든 주문수량을 계산하려고 합니다.
문제는, 제 쿼리가 불완전하다는 것입니다. 이 쿼리를 수정하려면 윈도우 함수를 도입해야 합니다.
select `orderProduct`, `orderId`,(select sum(orderCount) from `order`) as `총 주문수량`
from `Order`
order by `orderProduct`asc;
select
`orderProduct`,
`orderId`,
sum(orderCount)over(partition by `orderProduct`) as `총 주문수량`
from `Order`
order by `orderProduct`asc;
구체적으로 함수를 지정해주었다.
두번째 해결책 . 설정 변경
현재의 설정 확인
select @@sql_mode;
설정 변경하기
root 계정에서 설정변경가능
set @@global.sql_mode := replace(@@global.sql_mode, 'ONLY_FULL_GROUP_BY', '');
또는
SET @@sql_mode = sys.list_drop(@@sql_mode, 'ONLY_FULL_GROUP_BY');
해당 세션에서
SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
확인
#전역
select @@sql_mode;
#세션
SELECT @@SESSION.sql_mode;
728x90
반응형
'Database > mysql' 카테고리의 다른 글
[1일 1쿼리] 1일차 development부서에서 가장 높은 연봉을 받는 사람은? (0) | 2025.01.03 |
---|---|
[MySQL]Error Code: 3813. Column check constraint 'tablename_chk_2' references other column. (0) | 2024.07.03 |
[MySQL] 테이블 생성 및 제거 (0) | 2024.07.01 |
댓글