Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
结果中的MySQL子查询_Mysql_Subquery - Fatal编程技术网

结果中的MySQL子查询

结果中的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;

我想使用我的表上查询的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;
    +-------+---------+
    | 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(…)