我不知道这是否可行,但mysql可以做一个子选择并检索多条记录吗?
这是我的简化查询:
function compress(file) {
return new Promise((resolve, reject) => {
new ImageCompressor(file, {
quality: .6,
success: resolve,
error: reject
});
});
}
基本上,Table2有X量的记录,我需要在查询中回退,我不想运行二级查询(例如从Table1获取结果然后循环这些结果然后获取表2中的所有结果。
感谢。
答案 0 :(得分:2)
没有。 SELECT
子句中的子查询称为标量子查询。标量子查询有两个重要属性:
标量子查询 - 顾名思义 - 替换表达式中的标量值。如果子查询不返回任何行,则表达式中使用的值为NULL
。
在您的情况下,您可以改为使用LEFT JOIN
:
SELECT t1.*, t2.*
FROM Table1 t1 LEFT JOIN
Table2 t2
ON t2.key_id = t1.keyid;
请注意,表别名是一件好事。但是,它们应该使查询更简单,因此重复表名不是一个大赢家。
答案 1 :(得分:1)
MySQL可以执行返回多行或多列的子查询,但在标量上下文中执行此操作无效。
您将子查询放在标量上下文中。换句话说,在select-list中,子查询必须返回一列和一行(或零行),因为它将用于相应行上的一个项目,因为它使用select-list来构建结果。 / p>