Heim > Datenbank > MySQL-Tutorial > Hauptteil

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

Barbara Streisand
Freigeben: 2024-11-07 06:13:03
Original
564 Leute haben es durchsucht

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!