mysql中的批量更新技术

时间:2014-11-10 18:44:05

标签: php mysql

我的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();

你可以帮助我查询,导致我尝试过的所有事情都无法工作。

1 个答案:

答案 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天的用户。