结果中的MySQL子查询
我想使用我的表上查询的ID从我的表2中选择所有字段行结果中的MySQL子查询,mysql,subquery,Mysql,Subquery,我想使用我的表上查询的ID从我的表2中选择所有字段行 SELECT field_b FROM my_table_2 WHERE my_id_2 IN ( SELECT my_id FROM my_table WHERE field_a = 1234 ); 执行上述查询时,我得到错误1054(42S22)“/ALL/ANY子查询”中的未知列“my_id_2” 以下是我的表格示例供参考: mysql> select * from my_table;
SELECT field_b
FROM my_table_2
WHERE my_id_2 IN (
SELECT my_id FROM my_table WHERE field_a = 1234
);
执行上述查询时,我得到错误1054(42S22)“/ALL/ANY子查询”中的未知列“my_id_2”
以下是我的表格示例供参考:
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)
可以将该查询重写为简单的联接操作:
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;
另一种方式
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
);
这不一定是相同的语义。联接可能会引入重复项。可能尝试使用全名,即
WHERE my_table_2.my_id_2 IN(…)