2011-08-27 7 views
0
내가 table_2에서 모든 행을 얻을 된 table_1의 선택에서 (ID_1) ID의 배열을 사용하려면

ID_2 = ID_1MySQL의 하위 쿼리 결과 배열

SELECT field_b 
    FROM table_2 
    WHERE id_2 IN (
     SELECT id_1 FROM table_1 WHERE field_a = 1234 
); 

은 아래 참조 내 테이블의 예입니다 :

mysql> select * from table_1; 
    +-------+---------+ 
    | id_1 | field_a | 
    +-------+---------+ 
    |  1 | 1234 | 
    +-------+---------+ 
    |  2 | 1234 | 
    +-------+---------+ 


mysql> select * from table_2; 
+---------+---------+ 
| id_2 | field_b | 
+---------+---------+ 
|  1 | 5678 | 
+-------+-----------+ 
|  2 | 0013 | 
+-------+-----------+ 
+2

당신이 간단한 내부 조인 만들고 싶어합니까? SELECT * from table_2 INNER JOIN table_1 on table_1.id_1 = table_2.id_2? 예를 들어 WHERE field_a = 1234 – mkk

+3

'IN'을 사용하여 게시 한 코드가 작동해야합니다. –

+0

@Martin 그건 좋은 지적입니다. 이제는 언급 했으니 까. 나는 OP가 실제로 가지고있는 것이 어떤 문제인지 궁금하다. – jadarnel27

답변

3

INNER JOIN이 효과가 있습니까?

SELECT field_b 
FROM table_2 
INNER JOIN table_1 
    ON table_2.id_2 = table_1.id_1 
WHERE table_2.field_a=1234 
1

이 당신이 필요로하는 경우 나도 몰라 :

SELECT * FROM table_2 t2 
INNER JOIN table_1 t1 
ON t2.id_2 = t1.id_1 
WHERE t1.field_a = 1234 
1

또 다른 옵션 :

SELECT field_b 
FROM table_2 
WHERE EXISTS 
     (SELECT * 
     FROM table_1 
     WHERE field_a = 1234 
      AND table_2.id_2 = table_1.id_1 
    )