基本上我想在一个查询中执行以下操作。有可能吗?
$q = mysql_query('select * from table ORDER BY rand() LIMIT 5');
$s;
while($r = mysq_fetch_array($q)){
$s[i] = $r['id'];
// Do stuff
}
$u = mysql_query("update table SET lastUpdated = NOW() where id in (".implode(',',$s).")");
答案 0 :(得分:5)
您只需添加
即可ORDER BY RAND() LIMIT 5
更新查询结束
编辑:
我最初错过了部分问题。如果您只需需要更新5个随机行,则上述操作将起作用。但是,看起来您需要从表中获取5个随机ID,使用这些ID执行某些操作,并更新这些行。不幸的是,UPDATE查询可以修改数据,SELECT查询可以检索数据,但两种查询都不能同时执行。您可以创建某种存储过程来更新/选择5个随机行,但这比您当前拥有的2个查询更复杂
编辑#2:
如果您想在同一查询中执行此操作的原因是并发,则可以查看MySQL的Locking Read功能。
答案 1 :(得分:3)
您不能在同一查询中对同一个表使用select / update语句。