初始問題:
在MySQL 中,您無法顯示當查詢的GROUP BY 子句中也存在未包含在WHERE 子句中的其他欄位時,查詢的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>
這兩個解決方案都允許您在WHERE 子句中顯示特定使用者的userHabilitado 欄位數據,同時在GROUP BY 子句中包含其他欄位。
以上是如何在MySQL中使用GROUP BY顯示WHERE子句中的欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!