Heim >Datenbank >MySQL-Tutorial >Wie zeige ich ein Feld in der WHERE-Klausel mit GROUP BY in MySQL an?
Anfangsproblem:
In MySQL können Sie keine anzeigen Daten eines Datenbanktabellenfelds in der WHERE-Klausel einer Abfrage, wenn andere Felder, die nicht in der WHERE-Klausel enthalten sind, auch in der GROUP BY-Klausel der Abfrage vorhanden sind. Konkret:
<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>
Vorgeschlagene Lösung:
Leider kann diese Einschränkung nicht direkt in MySQL überwunden werden. Es gibt jedoch alternative Strategien, um das gewünschte Ergebnis zu erzielen:
Erstellen Sie eine Unterabfrage, um die gewünschten Felddaten abzurufen:
<code class="sql">SELECT userID, userHabilitado FROM cursosUsuarios WHERE userID = 70</code>
Dann verbinden Diese Unterabfrage mit der Hauptabfrage unter Verwendung der entsprechenden Felder:
<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>
Formulieren Sie die Abfrage mithilfe einer verschachtelten Abfrage neu:
<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>
Beide Lösungen ermöglichen es Ihnen, die userHabilitado-Felddaten für bestimmte Benutzer in der WHERE-Klausel anzuzeigen und gleichzeitig andere Felder in die GROUP BY-Klausel einzubeziehen.
Das obige ist der detaillierte Inhalt vonWie zeige ich ein Feld in der WHERE-Klausel mit GROUP BY in MySQL an?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!