質問

Jobs テーブルと Companies テーブルがあり、次の条件を満たす20個のジョブを抽出したい:

  1. 指定された2つの会社からの求人のみ
  2. 会社ごとに最大10人の仕事があります

UNION DISTINCT で次の SELECT を試しましたが、問題は LIMIT 0,10 が結果セット全体に適用されることです。各企業に適用してほしい。

会社ごとに10のジョブがない場合、クエリは見つかったすべてのジョブを返す必要があります。

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')
UNION DISTINCT
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

私はMySQLが初めてなので、UNIONを使用する代わりにこれを行う賢い方法があるかもしれないことを理解してください。

役に立ちましたか?

解決

引用ドキュメント

  

にORDER BYまたはLIMITを適用するには   個々のSELECT、節を配置   囲む括弧内   SELECT:

(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10)
UNION
(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top