ホームページ > データベース > mysql チュートリアル > GROUP BY を使用するときに MySQL の特定のフィールドに WHERE 句を適用する方法

GROUP BY を使用するときに MySQL の特定のフィールドに WHERE 句を適用する方法

Barbara Streisand
リリース: 2024-11-06 00:15:02
オリジナル
503 人が閲覧しました

How to Apply a WHERE Clause to a Specific Field in MySQL When Using GROUP BY?

WHERE 句は MySQL の特定のフィールドに適用できますか?

WHERE 句を含むクエリを作成する場合、条件を特定のフィールドに制限することができます。分野。あなたのケースでは、特定のユーザーでフィルタリングして、各コースの userHabilitado フィールドを表示しようとしています。ただし、指定されたクエリには必要な WHERE 句が含まれていません。

バージョン 5.7 より前の MySQL の動作

MySQL 5.7 より前では、ONLY_FULL_GROUP_BY として知られる設定がデフォルトで無効になっていました。これにより、group by 句を、group by の一部ではない非集計列 (NON AGGS) と組み合わせることができました。その結果、クエリは不正確または曖昧なデータを返す可能性があります。

MySQL 5.7 以降

MySQL 5.7 以降では、ONLY_FULL_GROUP_BY がデフォルトで有効になります。これには、データの不正確さを防ぐために、すべての NON AGGS を group by 句に含める必要があります。

次のクエリ例を考えてみましょう。

<code class="sql">SELECT
  cursos.cursoID AS idcurso,
  cursos.estadoCurso,
  GROUP_CONCAT(cursosUsuarios.userID SEPARATOR ',') AS usuarios,
  MAX(IF(usuarios.userID = 70, cursosUsuarios.userHabilitado, NULL)) AS userHabilitado
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>
ログイン後にコピー

このクエリでは、 MAX(IF()) 関数を使用して userHabilitado フィールドの集計を条件付きにします。 usuarios.userID が指定されたユーザー ID (70) と一致するかどうかを確認し、対応する userHabilitado 値を返します。一致しない場合は NULL を返します。 GROUP BY 句に MAX() を含めることで、各 cursoID の条件付き集計結果を保持できます。

以上がGROUP BY を使用するときに MySQL の特定のフィールドに WHERE 句を適用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート