我的mysql数据库中有两个表。我停用了登录日期超过2天的用户
// users
--------------------------
| id | user | active | // + 10 other fields
--------------------------
| 1 | John Doe | 1 |
| 2 | Ron Gore | 1 |
--------------------------
// login
-----------------------------
| id | user_id | date |
| 1 | 1 | 2014-11-10 |
| 2 | 2 | 2014-11-03 |
-----------------------------
到目前为止,我已经完成了PHP的大量工作。通过一个查询,我得到所有user_id
,其中date
早于2天,然后通过mysqli->fetch()
为每行UPDATE
查询并为该用户设置为0。
现在我想把它放在一个带有批量方法的查询中(朋友向我推荐它,因为我有10.000+用户),但我不确定查询应该是什么样子。
$query = ""; // help me with this line of code
$stmt = $mysqli->prepare($query);
$stmt->execute();
你可以帮助我查询,导致我尝试过的所有事情都无法工作。
答案 0 :(得分:3)
合并查询。您正在使用第一个查询选择ID。所以将它放在更新查询的where子句中。
update users set active = 0 where active = 1 and id in (select user_id from login where date <= now() - interval 2 day)
这将停用所有登录日期超过2天的用户。