Mysql에서는 다음과 같은 작성 방법이 허용됩니다. 하지만 엄격한가요, 아니면 이런 글쓰기를 지원하나요? 이 문제를 극복하는 방법에 대해 의문이 있으면 도와주세요.
으아악怪我咯2017-05-18 10:54:23
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
MySQL 5.7.5 이상에서는 기능 종속성 감지를 구현합니다. ONLY_FULL_GROUP_BY SQL 모드가 활성화되면(기본적으로) MySQL은 선택 목록, HAVING 조건 또는 ORDER BY 목록이 GROUP BY 절에 이름이 지정되지 않았거나 기능적으로 종속되지 않은 집계되지 않은 열을 참조하는 쿼리를 거부합니다. . (5.7.5 이전에는 MySQL이 기능 종속성을 감지하지 않으며 ONLY_FULL_GROUP_BY가 기본적으로 활성화되어 있지 않습니다. 5.7.5 이전 동작에 대한 설명은 MySQL 5.6 참조 설명서를 참조하세요.)来源:https://dev.mysql.com/doc/ref...
给我你的怀抱2017-05-18 10:54:23
select의 필드는
user_name별로 사용자 그룹에서 user_name을 선택하여 그룹에서 작성해야 합니다.
http://blog.csdn.net/u2830560...
怪我咯2017-05-18 10:54:23
먼저 그룹화의 개념과 그룹화 후에 어떤 효과를 얻을 수 있는지 이해하세요.
그룹화는 그룹의 속성을 기반으로 한 통계 분석입니다.
예를 들어, 성별로 그룹화한 학생 테이블에서 남자아이는 몇 명이고 여자아이는 몇 명입니까?
쿼리 결과 열에는 합계, 개수 등 집계 함수로 구성되어야 합니다. 예:
select count(*),성별별 학생 그룹의 성별;
사용자 그룹에서 user_name별로 *를 선택하는 경우 어떤 종류의 통계 결과를 얻으시겠습니까?
mysql5.6에서는 기본적으로 user_name으로 사용자 그룹에서 select *를 사용하여 이 쓰기 방법을 사용할 수 있지만 실제로는 명령문이 내부적으로 변환됩니다.
mysql5.7 이상에서는 기본적으로 이 쓰기 방법을 사용할 수 없으며 오류가 보고됩니다.
그래서 글을 쓰기 전에 그룹화를 통해 무엇을 세어야 할지 생각해보고 적절한 집계 함수를 사용하세요
天蓬老师2017-05-18 10:54:23
SQL 문에서 GROUP BY를 사용할 때 주의할 점 3가지
1: 별칭을 사용할 수 없습니다.
2: 함수 필드를 제외하고 select에 나타나는 필드는 그룹별로 나타나야 합니다.
3: 별칭에는 예약어를 사용할 수 없습니다. MYSQL을 클릭하기 위한 요구 사항은 없습니다!
명령문을 다시 살펴보겠습니다. 사용자 테이블에 user_name 필드가 하나만 있으면 이 명령문에는 문제가 없습니다.
사용자 테이블에 필드가 두 개 이상 있으면 이 명령문은 mysql에서는 문제가 없습니다. 오라클과 SQLServer에서
伊谢尔伦2017-05-18 10:54:23
user_name 필드가 존재하면 문제가 없습니다. 그룹화는 필드별로 그룹화하는 것입니다. 일반적으로 귀하와 같은 SQL을 실행할 수도 있습니다. 그러나 user_name은 일반적으로 고유하므로 고유 필드별로 그룹화하는 것은 의미가 없습니다.
黄舟2017-05-18 10:54:23
이것은 mysql에 대한 특수 기능 지원입니다. @xuexipha가 말했듯이 매개변수를 통해 끌 수 있습니다.
그러나 그룹화 후 반환되는 레코드 수는 이론적으로 그룹화 전보다 적으므로 사용하지 않는 것이 좋습니다.
어떤 레코드가 반환되는지 확인하지 않고 직접 선택*을 사용하세요.
给我你的怀抱2017-05-18 10:54:23
집계로 그룹화한 후에는 select 절의 요소만 유지하는 것이 가장 좋습니다:
1, 상수
2, 그룹에서 지정한 열 이름
3, 집계 함수(예: count(), avg()) , 합계( *)잠깐
결과*에는 그룹당 하나의 레코드만 나열되며, 첫 번째 레코드인지 임의의 값인지 모르겠습니다