2011-08-27 108 views
0

我想用(ID_1)ID的数组从TABLE_1选择从TABLE_2得到所有行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

你想进行简单的INNER JOIN? 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 
    )