2012-10-25 71 views
0

在这里也有类似的问题,但由于涉及多个表,无法找到足够接近以真正解决我的问题的内容。所以这里去...在一个查询中选择记录并更新

我需要选择一个记录集进行处理。为了防止选择相同的记录并行处理,我想设置中,我可以使用排除在后续调用这些记录的记录状态标志,即

SELECT ... WHERE statusflag <> 1 //(or whatever) 

我知道我可以使用一个事务,并选择更新,旋转通过这些记录更新标志,但我希望能完成这两个任务(获取/更新)与一个数据库命中。这在MySQL中可能吗?

+0

使用'JOIN'和/或子查询?这真的取决于你想要如何修改行。另外请记住,事务仅适用于InnoDB表。 – Sammitch

+0

据我所知mysql不会允许你更新你在一个查询中选择的表 – xception

+0

'UPDATE blah SET meh ='huh?' WHERE(SELECT * FROM my_other_table WHERE something = 47)类似这样的事情?或者你在说关于UPDATE blah SET flag = 0 WHERE statusflag <> 1 – wesside

回答