2012-10-17 3 views
2

사용에 관심이없는 나는, 쿼리는 말을 여러 행 2 열을 반환MySQL의 쿼리 - 내부 쿼리

select col1,col2 from table1; 

있습니다. 이 두 값을 다른 쿼리의 조건에 사용하고 싶습니다.

select col3,col4 from table2 where col5=col1 and col6=col2; 

col1col2 같은 뭔가가 첫 번째 쿼리의 결과 값입니다.

select col3,col4 from table2 
where col5 in (select col1 from table1) 
    and col6 in (select col2 from table1); 

하지만 그것은 속도가 느려 결과를 가져올로 위의 그림과 같이 내부 쿼리를 사용하려는 해달라고 같은

현재 내가 사용하고 내부 쿼리 뭔가.

좋습니다.

답변

2

JOIN 그 대신과 같이 IN 's을 (를) 사용 : 두 번째 테이블의 특정 컬럼을 선택할 필요하지 않은 것을

SELECT t2.col3, t2.col4 
FROM table2 t2 
INNER JOIN 
(
    SELECT col1, col2 
    FROM table1 
) t1 ON t2.col5 = t1.col1 AND t2.col6 = t1.col2 

참고. 당신과 같이 직접 두 번째 테이블 table1JOIN 수 있습니다 : 그것은 근무

SELECT t2.col3, t2.col4 
FROM table2 t2 
INNER JOIN table1 t1 ON t2.col5 = t1.col1 
        AND t2.col6 = t1.col2 
+0

감사합니다. 이미 기존 쿼리에서 많은 복잡성을 겪고 있기 때문에 첫 번째 쿼리를 사용했습니다. – Arun