enc*_*nce 13 mysql sql sql-update
我正在尝试更新名称所在的最新记录John(John具有多个记录但ID不同),但我似乎处于绑定状态.我的查询有什么问题?
UPDATE messages_tbl SET is_unread=1
WHERE ReceiveTime = (SELECT MAX(ReceiveTime) FROM messages_tbl WHERE name='John')
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做这样的事情?
Aii*_*ias 41
你可以尝试使用ORDER和LIMIT.
试试这个:
UPDATE messages_tbl SET is_unread = 1
WHERE name = 'John'
ORDER BY ReceiveTime DESC
LIMIT 1
Run Code Online (Sandbox Code Playgroud)
此查询将按最高(最近)ReceiveTime到最低(最旧)的顺序更新行ReceiveTime.与之配合使用时LIMIT,只会ReceiveTime更改最新版本.
您可以加入两者并根据条件执行更新.
UPDATE messages a
INNER JOIN
(
SELECT name , MAX(ReceiveTime) max_time
FROM messages
GROUP BY name
) b ON a.name = b.name AND
a.ReceiveTime = b.max_time
SET a.is_unread = 1
-- WHERE a.name = 'John'
Run Code Online (Sandbox Code Playgroud)
没有WHERE条件.它将全部更新is_unread最新条目的列.
| 归档时间: |
|
| 查看次数: |
22108 次 |
| 最近记录: |