我有2个数据库表
1-用户
id points
1 100
2 3
3 1
2- user_pages
user_id lp_flag
1 0
2 0
3 0
我正在尝试更新lp_flag = 1,如果有任何id点<用户表中有5个。
这是我的代码,我想仅使用cron job运行它。
$Point_row = mysql_query("SELECT * FROM users WHERE points < 5 ");
foreach($Point_row as $val){if($val['points']<5) {
mysql_query("UPDATE user_pages SET lp_flag = '1' WHERE user_id = '$id'")
}else{
mysql_query("UPDATE user_pages SET lp_flag = '0' WHERE user_id = '$id'") }
}
}
预期结果
user_pages
user_id lp_flag
1 0
2 1
3 1
因为id为2&amp;用户表中的3个点<5。
答案 0 :(得分:1)
您应该在一个查询中执行此操作:
update user_pages up join
users u
on up.user_id = u.id
set up.lp_flag2 = (case when u.points < 5 then 2 else 0 end);
在应用程序端不需要循环。
答案 1 :(得分:0)
您可以使用:
UPDATE user_pages SET lp_flag = 1
WHERE user_id IN (SELECT id FROM users WHERE points < 5)
如果lp_flag的默认值为'0',则不需要对UPDATE'0'使用ELSE
条件。