2011-08-26 131 views
2

我想使用來自my_table上查詢的ID來從my_table_2中選擇所有field_b行。MySQL子查詢IN結果

SELECT field_b 
    FROM my_table_2 
    WHERE my_id_2 IN (
     SELECT my_id FROM my_table WHERE field_a = 1234 
); 

我得到ERROR 1054 (42S22): Unknown column 'my_id_2' in 'IN/ALL/ANY subquery'執行上述查詢。

以下是參考比如我的表:

mysql> select * from my_table; 
    +-------+---------+ 
    | my_id | field_a | 
    +-------+---------+ 
    |  1 | 1234 | 
    +-------+---------+ 
    |  2 | 1234 | 
    +-------+---------+ 
    2 row in set (0.00 sec) 

mysql> select * from my_table_2; 
+-------+-----------+ 
| my_id_2 | field_b | 
+---------+---------+ 
|  1 | 5678 | 
+-------+-----------+ 
1 row in set (0.00 sec) 
+0

也許嘗試使用全名,即'WHERE my_table_2.my_id_2 IN(...)' – ain

回答

3

另一種方式

SELECT field_b 
FROM my_table_2 m2 
WHERE EXISTS (
    SELECT my_id FROM my_table 
    WHERE field_a = 1234 and m2.my_id_2=my_table.my_id 
); 
1

該查詢可以寫成一個簡單的連接操作:

SELECT field_b 
FROM my_table_2 
INNER JOIN my_table ON my_table_2.my_id_2 = my_table.my_id 
WHERE field_a = 1234; 
+0

這不一定是相同的語義。連接可以引入重複項。 –