2012-03-30 52 views
1

我有一個更新的相關子查詢,以前工作得很好(去年它的工作;今年,我對模式做了一些小的改變,數據不同)。現在它失敗,「子查詢返回多於一行」錯誤。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值在循環中運行查詢。猜猜看 - 它一直工作。

有什麼想法發生了什麼?

+0

如果子查詢不返回任何結果,錯誤是什麼?它可能只是一個錯誤的錯誤信息? – knabar 2012-03-30 13:54:30

+1

哪個版本的MySQL? [此錯誤](http://bugs.mysql.com/bug.php?id=20519)聽起來有關,但在5.0.25中修復。 – ruakh 2012-03-30 13:58:28

+0

@knabar - 那麼我會一次看到這種情況,當我做了一個ID。它成功完成。不過謝謝你的想法。 – 2012-03-30 13:59:19

回答