[mysql]选择在一个查询中更新

标签: sql MySQL PHP
发布时间: 2017/4/9 21:46:42
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有类似的查询︰

SELECT id, name, surname, fromId, toId, msg_text, readed FROM messages WHERE toId = 2;

所以我想 update all selected rows.readed = 1 。查询必须返回所有选定的行。

这些行动必须做在一个查询中,如果可能的事。

抱歉,我的英语

解决方法 1:

简短的回答︰ 不,它不是可能在单个查询中。

少一点简短的回答︰ 还有一些称为命令查询分离提出在短的命令应该做些什么和不返回任何内容和查询应该做什么和返回的东西。如果你打算在建立好的软件,我推荐遵循这个原则。

我不会陷入为什么这是不可能因为我自己没有那么多的 SQL 古鲁和只能猜测,但我会建议你的问题很容易解决。

当你得到你的结果然后你在最有可能处理它们在 PHP 中。假设结果按升序进行排序-在第一次迭代抓住最小 id 和在最后一个抢了最大的 id,然后运行更新查询︰

UPDATE messages SET readed = 1 WHERE toId = ? AND (id >= <minimum id> AND id <= <maximum id>)

在边注-姓氏和名字都可能不是你想要在消息表中存储。

官方微信
官方QQ群
31647020