ImSuite 5.7의 작동 방식을 이해하려고합니다. 쿼리에서SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 1055 식 # 2
SELECT
r.*,
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id
ORDER BY r.date ;
우는 내가 오류를 받고 있어요 "SELECT 목록에 GROUP BY 절에없는 및 GROUP BY 절에서 컬럼에 기능적으로 의존하지 않는 집계되지 칼럼 'r.id'를 포함, 이것은와 호환되지 않습니다 sql_mode = ONLY_FULL_GROUP_BY [코드 : 42000] "
그러나이 같은 쿼리
잘 작동 : 나는 로컬 호스트에서 일하고 있어요 때문에SELECT
r.id,
r.event_id,
r.user_id,
r.date
CONCAT(u.fname, ' ', u.lname) AS name
FROM
`events` AS r
LEFT JOIN `users` AS u
ON r.user_id = u.id
WHERE r.event_id = 1
GROUP BY r.user_id, r.event_id, r.id, r.date
ORDER BY r.date ;
, 나는 파일의 my.ini의 변경 및 설정 sql_mode을 만들 수있다"STRICT_ALL_TABLES을 , ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER "
그러나 라이브가되면 많은 사람들이 공유 호스팅에서 my.ini 파일에 액세스하지 않으므로 문제가 될 것입니다.
모든 비트 필드를 선언하고 이에 따라 집계하는 것이 비효율적 인 것 같습니다.
MySql에 대한 지식이 초보자이므로 위의 쿼리를 작성하는 더 좋은 방법이 있습니까? 하나의 테이블에서 10 개 또는 20 개의 필드를 가져와야 할 경우 모두를 모으는 것이 어리석은 것처럼 보입니다.
OP에 대한주의 사항 : select 절의 집계 함수 'count()','sum()', 등등. 그룹핑의 모든 값을 평가하는 곳이다. – Ray
올바른 concat은 집계 함수가 아닙니다. linear입니다. group_concat은 집계 함수입니다. – scaisEdge
DuH !! 좋은 캐치, 내 코멘트 편집 – Ray