Php Mysql选择一组记录并更新它们

Php Mysql选择一组记录并更新它们,php,mysql,Php,Mysql,我想知道是否有任何方法可以在查询中选择一组记录之后更新它们。我的意思是,我需要获取一组记录,并根据获取的记录集,将“读取”字段更新为1 我可以只在一个查询中完成,还是需要单独完成 谢谢。您不必选择它们。如果您知道要选择的位置,则可以使用相同的位置进行更新 假设您使用以下选项选择记录: select foo, bar from foobar where foo like '%fo' 然后你会像这样更新记录 update foobar set bar='new' where foo like '%

我想知道是否有任何方法可以在查询中选择一组记录之后更新它们。我的意思是,我需要获取一组记录,并根据获取的记录集,将“读取”字段更新为1

我可以只在一个查询中完成,还是需要单独完成


谢谢。

您不必选择它们。如果您知道要选择的
位置,则可以使用相同的位置进行更新

假设您使用以下选项选择记录:

select foo, bar from foobar where foo like '%fo'
然后你会像这样更新记录

update foobar set bar='new' where foo like '%fo'

示例:根据需要更改where子句中的表名和条件

update abc 
set read = 1
where a in (select p from pqr where p=q) 
根据您对问题的最新评论,您需要两个问题:

  $rs = mysql_query("select p from pqr where p=q"); 
将第二个查询放入循环中,遍历第一个查询的结果集

 foreach( $rs as $v)  
 mysql_query("update abc set read = 1 where a = $v");

为什么要尝试只使用一个查询?如果是一致性,请尝试在事务中使用DB,或者至少在发出这两个查询之前锁定表。但最终,两个查询是可以的——它的时间复杂度应该与单个查询相同。不要害怕双重质疑D

我不相信你能在一次查询中做到这一点-你需要选择数据,然后执行更新。在过程中使用光标如何?你希望获取数据用于其他目的,并更新
read
字段,对吗?是的,DJ QUIMBY,这就是想法。。。我需要在屏幕上显示该组记录,并在显示时更新读取字段。在这种情况下,我相信@andrewsi是正确的,您需要使用两条语句来执行此操作。这将导致对数据库的查询超过最终需要的数量。我建议使用相同的where子句来更新记录。这取决于OP在查询中需要哪个表以及什么条件。