我有一个更新的相关子查询,以前工作得很好(去年它的工作;今年,我对模式做了一些小的改变,数据不同)。现在它失败,“子查询返回多于一行”错误。LIMIT 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值在循环中运行查询。猜猜看 - 它一直工作。
有什么想法发生了什么?
如果子查询不返回任何结果,错误是什么?它可能只是一个错误的错误信息? – knabar 2012-03-30 13:54:30
哪个版本的MySQL? [此错误](http://bugs.mysql.com/bug.php?id=20519)听起来有关,但在5.0.25中修复。 – ruakh 2012-03-30 13:58:28
@knabar - 那么我会一次看到这种情况,当我做了一个ID。它成功完成。不过谢谢你的想法。 – 2012-03-30 13:59:19