首頁 > 資料庫 > mysql教程 > 在 MySQL 中使用 UNION 時如何有效限制每個公司的結果?

在 MySQL 中使用 UNION 時如何有效限制每個公司的結果?

Patricia Arquette
發布: 2025-01-14 13:02:51
原創
953 人瀏覽過

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

使用 UNION 和 LIMIT 最佳化 MySQL 查詢以進行多公司職位搜尋

從大型資料庫中有效地檢索資料需要仔細的查詢建構。此範例重點在於從多個公司獲取職位列表,將結果限制為每個公司最多 10 個職位。

使用 UNION DISTINCT 和單一 LIMIT 子句的簡單方法將限制結果總數,而不是每個公司的結果。 解決方案在於在 ORDER BY 查詢的每個單獨的 LIMIT 語句中應用 SELECTUNION

<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 ALL
(
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>
登入後複製

此修改後的查詢可確保 LIMIT 子句對每個公司的職位資料獨立運行,每個公司最多返回 10 個職位。 請注意 UNION ALL 的使用,它通常比 UNION DISTINCT 更有效,除非明確需要不同的結果。 此方法處理公司職位少於 10 個的情況,並返回該公司的所有可用職位。

為了增強靈活性和更複雜的場景,請考慮利用 MySQL 的 ROW_NUMBER() 視窗函數。 ROW_NUMBER() 為定義的分區(在本例中為每個公司)內的每一行分配唯一的排名,從而實現複雜的結果過濾和分組。

以上是在 MySQL 中使用 UNION 時如何有效限制每個公司的結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板