집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 GROUP BY를 사용하여 WHERE 절에 필드를 표시하는 방법은 무엇입니까?
초기 문제:
MySQL에서는 WHERE 절에 포함되지 않은 다른 필드가 쿼리의 GROUP BY 절에도 있는 경우 쿼리의 WHERE 절에 있는 데이터베이스 테이블 필드의 데이터입니다. 구체적으로:
<code class="sql">SELECT cursos.cursoID AS idcurso, cursos.estadoCurso, cursosUsuarios.userHabilitado AS 'ok', GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS 'usuarios' 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>
제안된 솔루션:
안타깝게도 이 제한은 MySQL 내에서 직접적으로 극복될 수 없습니다. 그러나 원하는 결과를 얻기 위한 대체 전략이 있습니다.
원하는 필드 데이터를 검색하는 하위 쿼리 만들기:
<code class="sql">SELECT userID, userHabilitado FROM cursosUsuarios WHERE userID = 70</code>
그런 다음 조인 적절한 필드를 사용하여 기본 쿼리를 포함하는 이 하위 쿼리:
<code class="sql">SELECT cursos.cursoID AS idcurso, cursos.estadoCurso, (SELECT userHabilitado FROM cursosUsuarios WHERE userID = 70) AS 'userHabilitado', GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS 'usuarios' 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>
중첩 쿼리를 사용하여 쿼리 재구성:
<code class="sql">SELECT idcurso, estadoCurso, 'userHabilitado' FROM ( SELECT cursoID AS idcurso, estadoCurso, userHabilitado FROM cursos LEFT JOIN cursosUsuarios ON cursos.cursoID = cursosUsuarios.cursoID WHERE cursos.estadoCurso='abierto' GROUP BY cursoID ) AS subquery WHERE userHabilitado = 1;</code>
이 두 가지 솔루션을 모두 사용하면 GROUP BY 절에 다른 필드를 포함하면서 WHERE 절에 특정 사용자에 대한 userHabilitado 필드 데이터를 표시할 수 있습니다.
위 내용은 MySQL에서 GROUP BY를 사용하여 WHERE 절에 필드를 표시하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!