2010-01-29 2 views
2

UNION을 사용하지 않고 하나의 테이블에서 하나의 쿼리를 수행하고 싶습니다.UNION을 사용하지 않고이 MYSQL 쿼리를 작성하려면 어떻게해야합니까?

다음은 결합해야하는 두 가지 쿼리입니다.

SELECT field1, field2, field3 FROM table1 WHERE field4 != 'condition1' AND feild3 >= 'condition2' ORDER BY field3 ASC LIMIT 20; 
SELECT field1, field2, field3 FROM table1 WHERE field4 != 'condition1' AND feild3 < 'condition2' ORDER BY field3 DESC LIMIT 5; 

기본적으로, 특정 기록 위 (20 개) 기록을 얻기 위해 노력하고있어 결과에 기록 자체를 잡는하지 않고, (FIELD3으로 정렬되지 않은 ID)와 그 아래 5 개 기록.

트릭은 UNION을 사용할 수 없습니다.

+1

당신이 사용하는 경우> = 및 <=, 당신은 중복 행을 얻을 수 있습니다. 그것은 당신이 원하는 것입니까? –

+0

이 숙제가 있습니까? '노동 조합 '을 금지 한 또 다른 이유는 무엇입니까? –

+0

@ St.Woland : 네 말이 맞아. > = 및 <를 표시하도록 예제를 편집했습니다. @ Jørn : 꽤 재밌 네요. 사실, CakePHP 프레임 워크에서 쿼리를 생성하려고하는데, UNION은 기본적으로 지원되지 않습니다. 단순히 두 개의 별도 쿼리를 실행하는 오래된 레거시 응용 프로그램을 업데이트하고 있습니다. – Stephen

답변

1

당신은 다음과 같이 뭔가를 할 수 -

select a.*, b.* 
from (select field1, field2, field3 
     from table1 
     where field4 != 'condition1' 
     and feild3 >= 'condition2' 
     order by field3 ASC 
     limit 20) a, 
    (select field1, field2, field3 
     from table1 
     where field4 != 'condition1' 
     and feild3 < 'condition2' 
     order my field3 desc 
     limit 5) b 
+0

조건없이 서브 쿼리'a'와 서브 쿼리'b'에 합류하지 않습니까? 예상보다 많은 행이 반환됩니다. –

+0

좋아 보인다. cakePHP에서 하위 쿼리를 사용하는 것은 어려운 작업입니다. 나는 $ this-> Model-> query를 사용하지 않기를 원했다. – Stephen

관련 문제