ホームページ >データベース >mysql チュートリアル >GROUP BY を使用するときに MySQL の特定のフィールドに WHERE 句を適用する方法
WHERE 句を含むクエリを作成する場合、条件を特定のフィールドに制限することができます。分野。あなたのケースでは、特定のユーザーでフィルタリングして、各コースの userHabilitado フィールドを表示しようとしています。ただし、指定されたクエリには必要な WHERE 句が含まれていません。
MySQL 5.7 より前では、ONLY_FULL_GROUP_BY として知られる設定がデフォルトで無効になっていました。これにより、group by 句を、group by の一部ではない非集計列 (NON AGGS) と組み合わせることができました。その結果、クエリは不正確または曖昧なデータを返す可能性があります。
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 サイトの他の関連記事を参照してください。