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

这是我的简化查询:

SELECT table1.*,
(
SELECT      table2.*
FROM        Table2 table2
WHERE       table2.key_id = table1.key_id
)
FROM Table1 table1


基本上,Table2有X条记录,我需要在查询中回退,并且我不想运行辅助查询(例如,从Table1中获取结果,然后遍历这些结果,然后获取所有结果从表2)。

谢谢。

最佳答案

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


它只能检索一列。
它只能检索零或一行。


顾名思义,标量子查询可替换表达式中的标量值。如果子查询不返回任何行,则表达式中使用的值为NULL

您可以使用LEFT JOIN代替:

SELECT t1.*, t2.*
FROM Table1 t1 LEFT JOIN
     Table2 t2
     ON t2.key_id = t1.keyid;


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

关于mysql - MySQL子选择并从子选择表返回多个记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49800431/

10-13 22:00