为什么相同的SQL有时会报告错误,有时它运行正常?

时间:2016-06-21 01:48:55

标签: sql oracle

这是SQL语句:

</mso:qat>

执行相同的SQL,它有时会报告此错误,但有时它运行得很好。

错误:

error

这就是我想要的(昨天有另一个user_id)

enter image description here

1 个答案:

答案 0 :(得分:3)

错误非常明显。我很确定它指的是这个子查询:

 (select uud.user_id
  from user_device uud
  where ud.dev_id = uud.dev_id and assigned = 1
 )

显然,这个子查询在某些情况下会返回多行。一个快速而又脏的修复方法是将and rownum = 1添加到where子句中。

您可以通过运行来确定重复项的位置:

select uud.dev_id, count(*) as cnt
from user_device uud
where uud.assigned = 1
group by uud.dev_id
having count(*) > 1;