创建包含 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中文网其他相关文章!