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 では、 WHERE 句に含まれていない他のフィールドもクエリの GROUP BY 句に存在する場合、クエリの 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>
ログイン後にコピー

これらのソリューションではどちらも、GROUP BY 句に他のフィールドを含めながら、WHERE 句で特定のユーザーの userHabilitado フィールド データを表示できます。

以上がMySQL で GROUP BY を使用して WHERE 句のフィールドを表示するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!