我不知道这是否可能,但是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 子选择并从子选择表中返回多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49800431/