建立包含 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 時如何將 WHERE 子句套用至 MySQL 中的特定欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!