자바스터디를 하다가 sql 오류문이 떴는데, 처음 보는 오류라 기록하기루 결심~
검색해보니 MYSQL 5.7.5 버전부터 [선택 목록, 조건 또는 목록이 절에 이름이 지정되지 않은 집계되지 않은 열을 참조하는 쿼리를 허용하지 않습니다]
라고 한다. 뭔소리인고 하니.. 아래와 같이 grouping을 하지 않은 필드(group1)를 select문에 넣으면 오류가 난다.
SELECT group1, group2 FROM table
WHERE case = "블라블라"
GROUP BY group2;
방법은 세가지를 찾았다.
sql_mode
에 설정되어 있는 ONLY_FULL_GROUP_BY
속성을 끄는 방법이다. 구글링해본 방법은 아래와 같다./* 현재 설치된 sql_mode의 값을 확인한다 */
mysql> SHOW VARIABLES LIKE 'SQL_MODE';
/* 기존의 값들을 복사한 뒤, ONLY_FULL_GROUP_BY 속성만 제외하고 다시 setting해준다 */
SET SESSION sql_mode = 'STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';
SET sql_mode=(SELECT REPLACE(@@sql_mode,'ONLY_FULL_GROUP_BY',''));
SELECT group1, group2 FROM table
WHERE case = "블라블라"
GROUP BY group1, group2;
cc. https://2day-is-seonday.tistory.com/91 , https://velog.io/@moojun3/MySQL-Error-Code-1055-onlyfullgroupby