示例 mysql表名为“Profile”数据如下
----------------------
user_id | max_capacity
----------------------
100 3
101 5
103 10
另一个名为“Active”数据的mysql表,如下所示
-------------------------
user_id | active_capacity
-------------------------
101 7
103 5
请注意表格“有效”列 - active_capacity
是动态的,其值每秒都会被另一个脚本更改。
我想确定我的user_id #101
是否点击了{Profile}表中active_capacity
允许的max_capacity
5
。请注意“有效”表格现在显示user_id #101
其active_capacity
为7
。
如果我的$hit=2
第一次点击/ user_id #101
,我想定义最大匹配值max_capacity
,然后我想将其值存储到另一个名为“Danger”的表中“
存储user_id #101
因为它的active_capacity现在是7,超过了max_capacity
mysql表“危险”数据如下
--------------
user_id | hits
--------------
101 1
5分钟后,user_id #101
mysql表中的active_capacity
“活动”减少到4
再过5分钟后,user_id #101
mysql表中的active_capacity
“有效”增加到10
所以我要在此处更新“危险”表格user_id #101
列hits
到“2”
请注意:我想更新“危险”表格列hits
值,只有在“活动表格”中的active_capacity
减少后,其active_capacity
值再次增加并点击/来自“个人资料”表
max_capacity
值
这个脚本可以在cron作业中使用。我需要建议,实现上述目标的最有效方法是什么。
感谢。
答案 0 :(得分:1)
您可以使用MySQL的on duplicate key update
功能将其作为一个语句来执行此操作。这假设user_id是Danger表上的主键。 SQL还假设user_id在其他两个表上是唯一的:
insert into Danger (
user_id, hits
) select
p.user_id, 1
from
Profile p
inner join
Active a
on a.user_id = p.user_id
where
a.active_capaciy > p.max_capacity
on duplicate key update set
hits = hits + 1;