首页  >  文章  >  数据库  >  如何在MySQL中使用GROUP BY显示WHERE子句中的字段?

如何在MySQL中使用GROUP BY显示WHERE子句中的字段?

Barbara Streisand
Barbara Streisand原创
2024-11-07 06:13:03571浏览

How to Display a Field in the WHERE Clause with GROUP BY in MySQL?

针对特定字段使用 WHERE 子句的 SQL 查询

初始问题:

在 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 中直接克服。但是,还有其他策略可以实现所需的结果:

解决方案 1:子查询

创建子查询来检索所需的字段数据:

<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>

解决方案 2:嵌套查询

使用嵌套查询重新制定查询:

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn