2012-03-30 16 views
1

昨年はうまくいきましたが、今年はスキーマを少し変更してデータが異なります。今度は "Subqueryが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 
    ) 

奇妙な、えっ?

は、複数の行を返す場合見つけるために - 「?ここでap.ID =」不可能であるべきで、Iは添加でクエリを調製しました各有効なID値のループでクエリを実行しました。何を推測する - それはすべての方法を介して働いた。

ここで起こっていることのアイデアはありますか?私はそれを推測している

+0

サブクエリが結果を返さない場合はどうなりますか?それはちょうど悪いエラーメッセージかもしれませんか? – knabar

+1

どのバージョンのMySQLですか? [このバグ](http://bugs.mysql.com/bug.php?id=20519)は関連性があると思われますが、5.0.25で修正されました。 – ruakh

+0

@knabar - 私はIDを一度に実行したとき、そのケースを見たことがあります。正常に完了しました。しかし、アイデアをありがとう。 –

答えて

関連する問題