Menapis Kereta Yang Berjaya Melengkapkan Semua Ujian
Mengenal pasti kereta yang telah lulus semua ujian yang diperlukan daripada senarai yang diberikan dengan cekap memerlukan kaedah yang lebih canggih daripada semakan operator IN
yang mudah, terutamanya apabila berurusan dengan berbilang ujian. Pendekatan yang lebih tepat memanfaatkan kuasa fasal GROUP BY
dan HAVING
.
Pertimbangkan pertanyaan SQL ini untuk memilih kereta yang telah melepasi setiap ujian dalam set yang telah ditetapkan:
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4</code>
Pertanyaan ini mengumpulkan hasil dengan carname
dan menggunakan klausa HAVING
dengan COUNT(DISTINCT testtype)
. Ini memastikan hanya kereta yang telah melepasi empat jenis ujian yang berbeza (dengan mengandaikan empat ujian ada dalam senarai) dimasukkan dalam output.
Untuk hasil yang lebih menyeluruh, menggabungkan ini sebagai subkueri dengan jadual cars
membolehkan mendapatkan butiran kereta tambahan:
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 )</code>
Pertanyaan dipertingkat ini menawarkan pemilihan kereta yang tepat dan lengkap yang berjaya melepasi semua ujian dalam senarai yang ditetapkan.
Atas ialah kandungan terperinci Bagaimana untuk memilih kereta yang telah lulus semua ujian dalam senarai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!