Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Memohon Klausa WHERE ke Medan Khusus dalam MySQL Apabila Menggunakan GROUP BY?

Bagaimana untuk Memohon Klausa WHERE ke Medan Khusus dalam MySQL Apabila Menggunakan GROUP BY?

Barbara Streisand
Barbara Streisandasal
2024-11-06 00:15:02371semak imbas

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

Bolehkah Klausa WHERE Digunakan pada Medan Khusus dalam MySQL?

Apabila membuat pertanyaan yang merangkumi klausa WHERE, adalah mungkin untuk mengehadkan syarat kepada yang khusus padang. Dalam kes anda, anda cuba memaparkan medan userHabilitado untuk setiap kursus, ditapis oleh pengguna tertentu. Walau bagaimanapun, pertanyaan yang diberikan tidak termasuk klausa WHERE yang dikehendaki.

Gelagat MySQL Sebelum Versi 5.7

Sebelum MySQL 5.7, tetapan yang dikenali sebagai ONLY_FULL_GROUP_BY telah dilumpuhkan secara lalai. Ini membenarkan kumpulan mengikut klausa digabungkan dengan lajur tidak teragregat (NON AGGS) yang bukan sebahagian daripada kumpulan oleh. Akibatnya, pertanyaan mungkin mengembalikan data yang salah atau samar-samar.

MySQL 5.7 dan Beyond

Dalam MySQL 5.7 dan lebih baru, ONLY_FULL_GROUP_BY didayakan secara lalai. Ini memerlukan semua NON AGGS untuk disertakan dalam kumpulan mengikut klausa, mengelakkan ketidaktepatan data.

Contoh

Pertimbangkan contoh pertanyaan berikut:

<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>

Pertanyaan ini menggunakan MAX(IF()) berfungsi untuk mesyaratkan pengagregatan medan userHabilitado. Ia menyemak sama ada usuarios.userID sepadan dengan ID pengguna yang disediakan (70) dan mengembalikan nilai userHabilitado yang sepadan, jika tidak, ia mengembalikan NULL. Dengan memasukkan MAX() dalam klausa GROUP BY, kami dapat mengekalkan hasil agregat bersyarat untuk setiap cursoID.

Atas ialah kandungan terperinci Bagaimana untuk Memohon Klausa WHERE ke Medan Khusus dalam MySQL Apabila Menggunakan GROUP BY?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn