我只是被一个简单的 mysql 查询困住了,我想更新具有表的最大 ID 的行,我正在尝试类似的方法但它不起作用
UPDATE inbox i
INNER JOIN messages m ON i.message_id = m.id
SET i.read = 0
WHERE m.conversation_id = 10
AND i.user_id = 1
ORDER BY i.id DESC
LIMIT 1
我也尝试过子查询,但它也不起作用
需要一些帮助。
谢谢
最佳答案
在 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
和你想要的user_id
返回最大id,然后你加入inbox
选择最大id只更新您想要的行,然后您可以只更新该行。
关于mysql - max in where子句更新mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13321413/