MySQL 쿼리에서 Union과 Limit Operation을 결합합니다
문제
나는있다 일자리 그리고 a 회사 표, 나는 다음 기준을 충족하는 20 개의 일자리를 추출하고 싶습니다.
- 두 개의 (2) 지명 된 회사에서만 일자리
- 회사 당 10 개의 일자리가있을 수 있습니다
나는 다음을 시도했다 SELECT
~와 함께 UNION DISTINCT
, 그러나 문제는 그게입니다 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 대신 이것을하는 더 똑똑한 방법이있을 수 있으므로 개선에 대한 제안을 환영합니다.
해결책
인용 문서,
개인 선택에 주문 또는 제한을 적용하려면 선택을 포함하는 괄호 안에 조항을 놓습니다.
(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);
제휴하지 않습니다 StackOverflow