MySQL에서 GROUP BY 로 한 컬럼을 기준으로
오름차순으로 정렬하고 중복제거 후 하나의 row를 조회하려고 하는데
다음과 같이 error가 발생할 수 있는데,
Error Code: 1055. Expression #2 of SELECT list is not in GROUP BY clause and
contains nonaggregated column '컬럼명' which is not functionally
dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
SELECT
update_flag,
update_detail,
create_date
FROM
BOARD_RECORD
WHERE
board_idx = #{boardIdx}
GROUP BY
update_flag
HAVING
update_flag = 'A'
sql_mode 옵션 중 only_full_group_by 를 비활성화 하거나
그룹바이 절에 조회할 컬럼들을 전부 넣거나 그룹바이 절에 넣은 컬럼만 조회하면 되지만
위의 기존 쿼리문을 그대로 유지하고 그룹바이 절에 넣은 컬럼을 기준으로
오름차순 정렬 및 중복제거 후 조회하고 싶을 때는
나머지 컬럼들을 ANY_VALUE() 로 감싸주면 해결.
SELECT
update_flag,
ANY_VALUE(update_detail) AS update_detail,
ANY_VALUE(create_date) AS create_date
FROM
BOARD_RECORD
WHERE
board_idx = #{boardIdx}
GROUP BY
update_flag
HAVING
update_flag = 'A'
'SQL' 카테고리의 다른 글
MySQL FIND_IN_SET() 쉼표로 구분된 문자열 내 특정 값 찾기 (0) | 2023.03.26 |
---|---|
MySQL DB 인덱싱을 통한 SELECT문 속도 향상 (0) | 2023.03.23 |
[Mysql] Error Code: 1093. You can't specify target table '테이블명' for update in FROM clause (0) | 2022.09.24 |
게시판 페이징 테스트용 더미데이터 생성하기 (Mysql 프로시저) Procedure (0) | 2022.09.11 |
[Mysql,MariaDB / Oracle] UPDATE 문 row 안 하나의 필드에 데이터 누적 저장하기 += (0) | 2022.08.18 |
최근댓글