반응형
현재 개발 중에는 mysql 5.7, 프로덕션에서는 5.6으로 작업 중입니다. 개발중인 그룹으로 쿼리를 실행할 때마다 "오류 코드 : 1055. SELECT 목록의 표현식 # 1이 GROUP BY에 없습니다"와 같은 오류가 발생합니다.
다음은 쿼리입니다.
SELECT c.id, c.name, i.*
FROM countries c, images i
WHERE i.country_id = c.id
GROUP BY c.id; Fixed for 5.7;
SELECT c.id, c.name,
ANY_VALUE(i.url) url,
ANY_VALUE(i.lat) lat,
ANY_VALUE(i.lng) lng
FROM countries c, images i
WHERE i.country_id = c.id
GROUP BY c.id;
이를 해결하기 위해 5.7 ANY_VALUE의 mysql 함수를 사용하지만 주요 문제는 mysql 5.6에서 사용할 수 없다는 것입니다.
따라서 개발 용 SQL 문을 수정하면 프로덕션에서 오류가 발생합니다.
mysql 5.6의 ANY_VALUE 함수에 대한 솔루션이나 정책을 알고 있습니까?
해결 방법
SET @mode := @@SESSION.sql_mode;
SET SESSION sql_mode = '';
/* your query here */
SET SESSION sql_mode = @mode;
이렇게하면 MySQL이 쿼리를 수락 할 수 있습니다.
하지만보세요, 귀하의 쿼리가 실제로 올바르지 않습니다. 실행하도록 설득 할 수 있으면 images
테이블에서 임의로 선택된 행을 반환합니다. 이러한 종류의 불확실성은 종종 사용자와 기술 지원 팀에게 혼란을 야기합니다.
쿼리를 개선하여 특정 이미지를 선택하는 것은 어떻습니까? images
테이블에 자동 증가 id
열이있는 경우이 작업을 수행하여 "첫 번째"이미지를 선택할 수 있습니다.
SELECT c.id, c.name, i.*
FROM countries c
LEFT JOIN (
SELECT MIN(id) id, country_id
FROM images
GROUP BY country_id
) first ON c.id = first.country_id
LEFT JOIN images i ON first.id = i.id
그러면 예측 가능한 이미지가 표시된 국가 당 하나의 행이 반환됩니다.
참조 페이지 https://stackoverflow.com/questions/37089347
반응형
'MySql' 카테고리의 다른 글
MySQL PHP MySQL에서 jQuery AJAX를 사용하여 다시로드하지 않고 양식 제출 (0) | 2020.11.07 |
---|---|
MySQL 여러 행을 공백으로 구분 된 하나의 문자열로 결합 (0) | 2020.11.07 |
MySQL Windows에서 mysql-python (최신 버전)을 설치할 수 없습니다. (0) | 2020.11.07 |
MySQL 왼쪽 조인은 행이없는 경우에도 null을 반환합니다. (0) | 2020.11.07 |
MySQL Python의 데이터베이스에서 CSV 파일을 어떻게 생성합니까? (0) | 2020.11.07 |
댓글