WHERE 절이 포함된 쿼리를 생성할 때 조건을 특정 필드로 제한할 수 있습니다. 필드. 귀하의 경우 특정 사용자로 필터링된 각 코스의 userHabilitado 필드를 표시하려고 합니다. 그러나 제공된 쿼리에는 원하는 WHERE 절이 포함되어 있지 않습니다.
MySQL 5.7 이전에는 ONLY_FULL_GROUP_BY로 알려진 설정이 기본적으로 비활성화되었습니다. 이를 통해 group by 절을 group by의 일부가 아닌 집계되지 않은 열(NON AGGS)과 결합할 수 있습니다. 결과적으로 쿼리가 올바르지 않거나 모호한 데이터를 반환할 수 있습니다.
MySQL 5.7 이상에서는 ONLY_FULL_GROUP_BY가 기본적으로 활성화되어 있습니다. 이를 위해서는 모든 NON AGGS가 group by 절에 포함되어 데이터 부정확성을 방지해야 합니다.
다음 예제 쿼리를 고려하십시오.
<code class="sql">SELECT cursos.cursoID AS idcurso, cursos.estadoCurso, GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS usuarios, MAX(IF(usuarios.userID = 70, cursosUsuarios.userHabilitado, NULL)) AS userHabilitado FROM cursos LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID LEFT JOIN usuarios ON cursosUsuarios.userID = usuarios.userID WHERE cursos.estadoCurso = 'abierto' GROUP BY cursos.cursoID;</code>
이 쿼리는 MAX(IF()) 함수는 userHabilitado 필드의 집계를 조건화합니다. usuarios.userID가 제공된 사용자 ID(70)와 일치하는지 확인하고 해당 userHabilitado 값을 반환하고, 그렇지 않으면 NULL을 반환합니다. GROUP BY 절에 MAX()를 포함하면 각 cursoID에 대한 조건부 집계 결과를 유지할 수 있습니다.
위 내용은 GROUP BY를 사용할 때 MySQL의 특정 필드에 WHERE 절을 적용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!