Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat Apabila Menggunakan UNION dalam MySQL?

Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat Apabila Menggunakan UNION dalam MySQL?

Susan Sarandon
Susan Sarandonasal
2025-01-14 12:49:48749semak imbas

How to Limit Results Per Company When Using UNION in MySQL?

Menggabungkan operasi UNION dan LIMIT dalam MySQL mengehadkan bilangan hasil bagi setiap syarikat

Matlamatnya adalah untuk mendapatkan 20 pekerjaan yang sepadan dengan kriteria khusus daripada dua syarikat tertentu, sambil mengehadkan bilangan keputusan kepada maksimum 10 setiap syarikat. Masalah dihadapi apabila menggunakan UNION DISTINCT dan LIMIT kerana yang terakhir mempengaruhi keseluruhan set keputusan dan bukannya set keputusan individu untuk setiap syarikat.

Penyelesaian berikut menyelesaikan isu ini:

<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))
ORDER BY name;</code>

Tweak utama adalah untuk menyusun klausa LIMIT dalam pernyataan SELECT individu dan bukannya menggunakannya pada set hasil gabungan. Ini memastikan keputusan dihadkan kepada maksimum 10 bagi setiap syarikat. Kami kemudian menggunakan penyataan ORDER BY luar yang lain untuk mengisih hasil gabungan akhir yang ditetapkan mengikut nama syarikat.

Ingat bahawa MySQL menggunakan ORDER BY selepas UNION, jadi satu lagi ORDER BY diperlukan untuk mengisih set hasil gabungan.

Atas ialah kandungan terperinci Bagaimana untuk Mengehadkan Keputusan Setiap Syarikat Apabila Menggunakan UNION dalam MySQL?. 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