刚学习sql连接和东西,我有一个问题.
你能加入更新查询吗?或者它仅适用于选择的那些.因为我有这个代码;
$five_ago = date("Y-m-d H:i:s", strtotime("$now - 5 mins"));
$sql_result23 = mysql_query("SELECT * FROM usersonline WHERE timestamp < '$five_ago'", $db);
while ($rs23 = mysql_fetch_array($sql_result23)) {
mysql_query("UPDATE users SET status='gone' WHERE id ='$rs23[userID]'");
}
Run Code Online (Sandbox Code Playgroud)
它从usersonline表中挑选出超过5分钟的所有数据,然后在users表中找到它们并更新它们的记录.
我不是JOIN向导或任何东西,但我认为连接会简化这一点.有人可以澄清一下吗?
使用IN:
UPDATE users
SET status='gone'
WHERE id IN
( SELECT userID
FROM usersonline
WHERE timestamp < '$five_ago'
)
Run Code Online (Sandbox Code Playgroud)
使用JOIN:
UPDATE users
JOIN usersonline
ON usersonline.userID = users.id
SET users.status='gone'
WHERE usersonline.timestamp < '$five_ago'
Run Code Online (Sandbox Code Playgroud)
使用EXISTS:
UPDATE users
SET status='gone'
WHERE EXISTS
( SELECT *
FROM usersonline
WHERE timestamp < '$five_ago'
AND userID = users.id
)
Run Code Online (Sandbox Code Playgroud)
你也可以跳过5 minutes agoPHP中的计算,让MySQL引擎做到这一点,用:
WHERE timestamp < NOW() - INTERVAL 5 MINUTE
Run Code Online (Sandbox Code Playgroud)