Seorang pengguna menghadapi cabaran semasa cuba menapis data dalam MySQL menggunakan fungsi COUNT(*) dalam klausa MANA. Mereka mencari kaedah yang cekap untuk menyelesaikan tugas ini tanpa menggunakan pernyataan SELECT bersarang, kerana ia boleh menggunakan sumber yang besar.
Pengguna membentangkan kod pseudo berikut untuk menggambarkan hasil yang mereka inginkan:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
Masalah dengan pendekatan ini ialah MySQL tidak menyokong fungsi agregat, seperti COUNT(*), dalam klausa WHERE. Untuk memintas pengehadan ini, pengguna meneroka kemungkinan menggunakan SELECT bersarang untuk mengira bilangan baris bagi setiap gid unik dan kemudian menapis hasil dengan sewajarnya. Walau bagaimanapun, kaedah ini dianggap tidak cekap dan intensif sumber.
Nasib baik, MySQL menyediakan penyelesaian yang lebih dioptimumkan menggunakan klausa GROUP BY dan HAVING:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
Pertanyaan ini melakukan langkah berikut:
Dengan memanfaatkan klausa GROUP BY dan HAVING, pendekatan ini berkesan mencapai hasil yang diinginkan tanpa menggunakan pernyataan SELECT bersarang, menghasilkan prestasi dan kecekapan yang lebih baik.
Atas ialah kandungan terperinci Bagaimana Menapis Data Berdasarkan Kiraan dalam MySQL Tanpa Menggunakan Nested SELECT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!