LIMIT 1何时返回多行?

时间:2012-03-30 13:51:16

标签: mysql

我在更新中有一个相关的子查询,过去工作得很好(去年它工作;今年我对模式进行了一些小改动,数据不同)。现在它失败了“子查询返回超过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值运行查询。猜猜是什么 - 它一直有效。

关于这里发生了什么的任何想法?

1 个答案:

答案 0 :(得分:2)

我猜这是由Bug #20519: "'Subquery returns more that 1 row' error with 'limit x, 1'"引起的,这在MySQL 5.0.25中得到修复。