반응형
MySQL 쿼리에서 UNION 및 LIMIT 작업 결합
Jobs and Companies 테이블이 있으며 다음 조건을 충족하는 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에 ORDER BY 또는 LIMIT을 적용하려면 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);
Alex의 답변과 Joe의 관찰에 따라 다음 사항이 SQLite에서 작동해야 합니다.
SELECT * FROM
(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);
Teradata에서는 top query와의 결합을 그대로 사용할 수 없습니다.오류가 발생하면 아래와 같이 수정해야 합니다.Teradata 사용자를 위한 솔루션 추가.
언급URL : https://stackoverflow.com/questions/1415328/combining-union-and-limit-operations-in-mysql-query
반응형
'source' 카테고리의 다른 글
Java 인터페이스의 옵션 메서드 (0) | 2023.01.08 |
---|---|
Python 파일의 일반적인 헤더 형식은 무엇입니까? (0) | 2023.01.08 |
python 다중 처리를 시도하는 Windows의 RuntimeError (0) | 2023.01.08 |
항아리가 장착되지 않았습니다.Servlet 사양 2.3, 섹션 9.7.2를 참조한다.문제 클래스: javax/servlet/Servlet.class (0) | 2023.01.08 |
javascript에서 평면 배열에서 트리 배열 만들기 (0) | 2023.01.08 |