Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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_Sql_Subquery - Fatal编程技术网

MySQL子选择并从子选择表返回多条记录

MySQL子选择并从子选择表返回多条记录,mysql,sql,subquery,Mysql,Sql,Subquery,我不知道这是否可行,但mysql可以做一个子选择并检索多个记录吗 以下是我的简化查询: SELECT table1.*, ( SELECT table2.* FROM Table2 table2 WHERE table2.key_id = table1.key_id ) FROM Table1 table1 基本上,表2有X个数量的记录,我需要在查询中收回这些记录,我不想运行辅助查询,例如,从表1获取结果,然后循环这些结果,然后从表2中获取所有结果

我不知道这是否可行,但mysql可以做一个子选择并检索多个记录吗

以下是我的简化查询:

SELECT table1.*, 
(
SELECT      table2.*
FROM        Table2 table2
WHERE       table2.key_id = table1.key_id   
)
FROM Table1 table1 
基本上,表2有X个数量的记录,我需要在查询中收回这些记录,我不想运行辅助查询,例如,从表1获取结果,然后循环这些结果,然后从表2中获取所有结果

谢谢。

否。SELECT子句中的子查询称为标量子查询。标量子查询有两个重要属性:

它只能检索一列。 它只能检索零行或一行。 标量子查询(顾名思义)替换表达式中的标量值。如果子查询不返回任何行,则表达式中使用的值为NULL

在您的情况下,可以改为使用左联接:

请注意,表别名是一件好事。但是,它们应该使查询更简单,因此重复表名不是一个大赢家。

否。SELECT子句中的子查询称为标量子查询。标量子查询有两个重要属性:

它只能检索一列。 它只能检索零行或一行。 标量子查询(顾名思义)替换表达式中的标量值。如果子查询不返回任何行,则表达式中使用的值为NULL

在您的情况下,可以改为使用左联接:


请注意,表别名是一件好事。但是,它们应该使查询更简单,因此重复表名不是一个大赢家。

MySQL可以执行返回多行或多列的子查询,但在标量上下文中这样做是无效的


您正在将子查询放在标量上下文中。换句话说,在选择列表中,子查询必须返回一列一行或零行,因为它将用于相应行上的一项,因为它使用选择列表生成结果。

MySQL可以执行返回多行或多列的子查询,但在标量上下文中执行此操作无效

您正在将子查询放在标量上下文中。换句话说,在select列表中,子查询必须返回一列一行或零行,因为当它使用select列表生成结果时,它将用于相应行上的一个项目。

您将其放入FROM子句,而不是select。为什么不直接将其加入FROM子句,而不是select?为什么不直接加入它?@LargeTuna。左连接应该做你想做的。@LargeTuna。左连接应该执行您想要的操作。
SELECT t1.*, t2.*
FROM Table1 t1 LEFT JOIN
     Table2 t2
     ON t2.key_id = t1.keyid;