单行子查询返回多个行问题

时间:2015-12-11 14:30:59

标签: sql oracle

我对此查询有疑问:

UPDATE  ZOO.ANIMAL
  SET   ANIMAL.PRICE = ANIMAL.PRICE
           * ( select ANI_009.c1
               from   ZOO.ANI_009
               where  ANIMAL.TYPE = ANI_009.TY)
              WHERE ANIMAL.TYPE != 'familial'

当我运行此操作时出现此错误:

  

错误报告 - SQL错误:ORA-01427:子查询返回记录   不止一行00000 01427. - “单行子查询返回更多   比一行“   *原因:   *动作

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

错误描述了确切的问题。您的子查询返回多行。所以你试图将price乘以一组行而不是另一个数字。

问题是:

select ANI_009.c1
from   ZOO.ANI_009
where  ANIMAL.TYPE = ANI_009.TY

返回多行而不只是一行。

答案 1 :(得分:0)

基本上在子查询中,当您比较您的值时,请确保您的查询。

错误就在乎,您的查询是

从薪水=的员工中选择薪水(从员工中选择薪水,其状态为'%ne');

这里喜欢运营商提取记录列表,即 新泽西州 新罕布什尔 内华达

等于运算符只能从子查询中取一行。为了解决上述错误,请在子查询中仅列出一条记录