MySql では、同じテーブルを参照するサブクエリがある場合、テーブルを更新できませんが、サブクエリを JOINS に置き換えることはできます。私はこれをします、それはトリックですが、うまくいきます:
UPDATE
inbox inner join (select max(id) as maxid from inbox) mx on inbox.id = mx.maxid
SET inbox.`read` = 0
編集:あなたがあなたの質問を編集したのを見たので、私の答えを編集する必要があります:
UPDATE
inbox
INNER JOIN (select max(inbox.id) as maxid
from
inbox inner join messages
on inbox.message_id = messages.id
where
messages.conversation_id=10
and inbox.user_id=1) mx
on inbox.id = mx.maxid
SET inbox.`read` = 0
サブクエリは、必要なconversation_id
と に基づいて最大 ID を返しますuser_id
。次に、最大 ID と結合inbox
して必要な行だけを選択すると、その行だけを更新できます。