值存在时更新值

时间:2013-01-10 17:08:41

标签: mysql

我正在尝试创建一个新的cron作业,但很难解释如何制作它,我无法弄清楚如何制作它。我会尽力解释它。

cron作业需要更新所有用户的引用用户数。 cron作业的任务(它是一个SQL查询)是将引用用户的记录数量设置为sql行。例如:

用户A邀请用户B,cron作业设置用户A他的引用计数为1 (因为他引用了用户B),用户A现在邀请用户C,因此cron作业计入+1进入< strong>他的(用户A)行。

之后,用户B决定邀请用户D,因此cronjob完成他的工作,并将广告+1加入他的(用户B)行。

它基本上归结为检查每个用户的引用用户的记录数,然后将记录数添加到一行中。 (当然,每个用户都是独一无二的)

如果不够清楚,请告诉我。

1 个答案:

答案 0 :(得分:1)

这样的事情应该有效。

UPDATE  users u

        JOIN 
        (SELECT referred_by, COUNT(*) referral_count FROM users GROUP BY referred_by) ref
        ON ref.referred_by = u.user_id

SET     u.referrals = ref.referral_count

WHERE   u.referrals <> ref.referral_count
;

如果referrals字段可以为null,则将WHERE子句更改为:

WHERE   IFNULL(u.referrals, 0) <> ref.referral_count