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

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

Barbara Streisand
发布: 2024-11-07 06:13:03
原创
643 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板