2011-07-27 14 views
0

を重視します。これは私の小さなCMSでしばしば必要となります。このクエリはエラーを返します。しかし:MySQLのUPDATEは、私がこのような何かをしたい

#1221 - Incorrect usage of UPDATE and ORDER BY 

それはUPDATEクエリでORDER BYやLIMITを使用することはできませんか?

私はサブクエリでそれを試してみました:

...
UPDATE articles 
SET live=1 
WHERE id= (SELECT id FROM articles WHERE aid=3 ORDER BY created DESC LIMIT 1) 

しかし、これが許可されていない、あまりにも...あなたがUPDATEで同じテーブルを使用し、1つのクエリでクエリを選択してはなりません

解決策は何ですか?これは頻繁に行う必要があるため、私はTMPテーブルを作成したくありません。 PHPの回避策は必要ですか?

+1

最初のクエリが機能するはずです。私はあなたがいくつかのJOINを持っていると思います。私たちが助けることができるように動作しない正確なクエリを投稿してください。 –

答えて

2

これはうまく動作しますが、唯一の制限は、複数のもの(結合など)ではなく、更新で1つのテーブルのみを使用できることです。 the docsを参照してください。複数のテーブル・ステートメントで本当に必要な場合は、同じテーブルに対してLEFT JOINを使用して、null不可能な列を持つ場合は、より大きな「作成済み」値がない行のみを選択できます。

関連する問題