我在更新中有一个相关的子查询,过去工作得很好(去年它工作;今年我对模式进行了一些小改动,数据不同)。现在它失败了“子查询返回超过1行”错误。
查询是这样的:
update mytable as q
set p_ID = (
select ap.pID
from aptable as ap
where ap.ID = q.ID
and ap.txnDate is not NULL
order by ap.txnDate
limit 1 offset 2
)
很奇怪,是吗?
为了找到它返回多行的位置 - 这应该是不可能的,我准备了添加“where ap.ID =?”的查询。并在循环中为每个有效的ID值运行查询。猜猜是什么 - 它一直有效。
关于这里发生了什么的任何想法?
答案 0 :(得分:2)
我猜这是由Bug #20519: "'Subquery returns more that 1 row' error with 'limit x, 1'"引起的,这在MySQL 5.0.25中得到修复。