【异常】MySQL提示[Err] 1242 - Subquery returns more than 1 row

一、报错内容

[Err] 1242 - Subquery returns more than 1 row
SQL中子查询返回多行的错误

二、报错说明

在MySQL中遇到了子查询返回多行的错误。
当子查询返回多行,但SQL语句只期望一行时,就会发生此错误。

三、报错解决

解决此错误,可以修改子查询以仅返回一行。

3.1 使用聚合函数从子查询返回单个值

使用聚合函数,如MAX()或MIN(),实现从子查询返回单个值,例如:

SELECT *
FROM table1
WHERE column1 = (SELECT MAX(column1) FROM table2);

在上面的示例中,子查询SELECT MAX(column1) FROM table2仅返回一个具有最大值的column1的行。然后使用此值过滤来自table1的结果。

3.2 使用LIMIT子句将子查询返回的行数限制为一行

使用LIMIT子句将子查询返回的行数限制为一行,例如:

SELECT *
FROM table1
WHERE column1 = (SELECT column1 FROM table2 ORDER BY column1 DESC LIMIT 1);

在上面的示例中,子查询SELECT column1 FROM table2 ORDER BY column1 DESC LIMIT 1仅返回一个具有最高值的column1的行,然后使用此值过滤来自table1的结果。

猜你喜欢

转载自blog.csdn.net/wstever/article/details/130240369