MySQL子选择并从子选择表返回多条记录
我不知道这是否可行,但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中获取所有结果
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;