DBAtlas · 数据库运维图谱

ORA-01427: single-row subquery returns more than one row(单行子查询返回多个行)

Oracle

含义

预期返回单行的子查询返回了多行。例如,等值(=)比较右侧的子查询产生了多个值。

原因

在需要 = 或赋值的地方子查询返回了多行;WHERE 条件不够精确;关联条件中的匹配不唯一;SELECT 列表中的标量子查询返回多行。

解决方法

缩小子查询范围,使其只返回一行(附加 WHERE、唯一键)。如果确实需要多个值,用 IN 代替 =:WHERE id IN (SELECT id FROM ...)。或者在子查询中添加聚合(MAX、MIN),或用 ROWNUM = 1 限制为一行。先单独运行子查询,检查其返回的行数。

在 DBAtlas 中打开 →

同一数据库的其他条目