在MySQL如果你有一個子查詢引用同一個表,你無法更新表,但使用連接,你可以sostitute子查詢。我會做這個,這是一個伎倆,但它的工作原理:
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
你的子查詢返回的最大ID的基礎上conversation_id
和user_id
你想要的,那麼你加入inbox
與最大的ID來選擇你想要的行,然後你可以更新那一行。
對不起,我的錯誤,有一個加入我的更新查詢,所以我沒有把正確的查詢之前 – MZH