Heim >Datenbank >MySQL-Tutorial >Wie zeige ich ein Feld in der WHERE-Klausel mit GROUP BY in MySQL an?

Wie zeige ich ein Feld in der WHERE-Klausel mit GROUP BY in MySQL an?

Barbara Streisand
Barbara StreisandOriginal
2024-11-07 06:13:03643Durchsuche

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

SQL-Abfrage mit WHERE-Klausel für ein bestimmtes Feld

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:

Lösung 1: Unterabfrage

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>

Lösung 2: Verschachtelte Abfrage

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn