MYSQL's UNION and LIMIT: Cekap Mendapatkan Pekerjaan Teratas daripada Berbilang Syarikat
Artikel ini menunjukkan cara untuk mendapatkan semula bilangan pekerjaan teratas tertentu daripada syarikat yang berbeza menggunakan klausa UNION
dan LIMIT
MySQL. Cabarannya terletak pada menerapkan LIMIT
pada pemilihan pekerjaan setiap syarikat secara bebas, bukannya secara global merentas semua syarikat.
Pendekatan biasa, tetapi cacat, menggunakan UNION DISTINCT
dengan satu klausa LIMIT
. Ini menggunakan had pada set hasil gabungan, bukan kepada setiap syarikat secara individu.
Penyelesaian, seperti yang diperincikan dalam dokumentasi MySQL, melibatkan penggunaan klausa LIMIT
dalam setiap individu SELECT
pernyataan UNION
pertanyaan. Ini memastikan pengehadan bebas untuk setiap data syarikat.
Berikut ialah pertanyaan yang dioptimumkan untuk mendapatkan 10 pekerjaan teratas daripada 'Company1' dan 'Company2':
<code class="language-sql">(SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company1') ORDER BY name, title LIMIT 0, 10) UNION (SELECT c.name, j.title, j.`desc`, j.link FROM jobs_job j INNER JOIN companies_company c ON j.company_id = c.id WHERE c.name IN ('Company2') ORDER BY name, title LIMIT 0, 10)</code>
Pertanyaan ini secara berkesan mendapatkan semula 10 pekerjaan teratas daripada setiap syarikat, memenuhi keperluan untuk mengehadkan bebas dalam operasi UNION
. Teknik ini penting untuk mendapatkan semula data yang tepat dan cekap apabila bekerja dengan berbilang sumber data.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan N Pekerjaan Teratas daripada Berbilang Syarikat Menggunakan MySQL UNION dan LIMIT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!