MySQL の UNION と LIMIT: 複数の企業から上位の求人を効率的に取得する
この記事では、MySQL の UNION
句と LIMIT
句を使用して、さまざまな企業から指定された数の上位の求人を取得する方法を説明します。 課題は、全企業にグローバルに適用するのではなく、各企業の求人選択に個別に LIMIT
を適用することにあります。
一般的ですが欠陥のあるアプローチでは、UNION DISTINCT
を単一の LIMIT
句で使用します。これにより、制限は各企業に個別に適用されるのではなく、結合された結果セットに適用されます。
MySQL ドキュメントで詳しく説明されている解決策には、LIMIT
クエリの個々の ステートメントの 内SELECT
に UNION
句を適用することが含まれます。 これにより、各企業のデータに対して独立した制限が保証されます。
「Company1」と「Company2」から上位 10 件の求人を取得するための最適化されたクエリは次のとおりです。
<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>
このクエリは、各企業から上位 10 件の求人を効率的に取得し、UNION
操作内の独立した制限の要件を満たします。 この手法は、複数のデータ ソースを操作する場合に、正確かつ効率的にデータを取得するために非常に重要です。
以上がMySQL の UNION と LIMIT を使用して複数の企業から上位 N 件の求人を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。