GROUP BY를 사용할 때 MySQL의 특정 필드에 WHERE 절을 적용하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-06 00:15:02
원래의
443명이 탐색했습니다.

How to Apply a WHERE Clause to a Specific Field in MySQL When Using GROUP BY?

MySQL의 특정 필드에 WHERE 절을 적용할 수 있나요?

WHERE 절이 포함된 쿼리를 생성할 때 조건을 특정 필드로 제한할 수 있습니다. 필드. 귀하의 경우 특정 사용자로 필터링된 각 코스의 userHabilitado 필드를 표시하려고 합니다. 그러나 제공된 쿼리에는 원하는 WHERE 절이 포함되어 있지 않습니다.

버전 5.7 이전의 MySQL 동작

MySQL 5.7 이전에는 ONLY_FULL_GROUP_BY로 알려진 설정이 기본적으로 비활성화되었습니다. 이를 통해 group by 절을 group by의 일부가 아닌 집계되지 않은 열(NON AGGS)과 결합할 수 있습니다. 결과적으로 쿼리가 올바르지 않거나 모호한 데이터를 반환할 수 있습니다.

MySQL 5.7 이상

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿