我不知道这是否可能,但是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/