如何在MySQL中使用GROUP BY顯示WHERE子句中的欄位?

Barbara Streisand
發布: 2024-11-07 06:13:03
原創
564 人瀏覽過

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
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!