【问题标题】:Mysql Select a set of records and Update themMysql 选择一组记录并更新它们
【发布时间】:2012-09-20 18:04:42
【问题描述】:

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

我可以在唯一的查询中进行还是需要单独进行?

谢谢。

【问题讨论】:

  • 我不相信你可以在一个查询中完成 - 你需要选择数据,然后执行更新。
  • 程序中的光标怎么样?
  • 您希望获取数据用于其他目的并更新read 字段,对吗?
  • YES DJ QUIMBY,这就是我的想法...我需要在屏幕上显示那组记录并在显示时更新读取字段。
  • 在这种情况下,我相信@andrewsi 是正确的,你需要用两个语句来做到这一点。

标签: php mysql


【解决方案1】:

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

update abc 
set read = 1
where a in (select p from pqr where p=q) 

根据您对问题的最新评论,您需要 2 个查询:

  $rs = mysql_query("select p from pqr where p=q"); 

将第二个查询放入循环中,遍历第一个查询的结果集

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

【讨论】:

  • 这将导致对数据库的查询超出最终所需。我建议使用相同的 where 子句来更新记录。
  • 嗯,这取决于哪个表,以及 OP 在查询中需要什么标准。
【解决方案2】:

您确实不必完全选择它们。如果您知道WHERE 将用于选择什么,则可以使用相同的 WHERE 进行更新。

假设你会选择你的记录:

select foo, bar from foobar where foo like '%fo'

然后你会像这样更新记录

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-17
      • 2011-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多