0

我有这个表“用户”,它有下表。

username refered refcount
 admin              3         //admin refered 3 users.(user1,user3,user6) 
 user1    admin     1
 user3    admin     0
 user4    user3     0
 user5    user1     0
 user6    admin     0

我想要做的是计算用户推荐的每个人并将该计数保存到每条记录的引用计数中。但我该怎么做呢?

我试过这个但得到一个错误

UPDATE user
SET referrals=(SELECT COUNT(userid) AS refs FROM user WHERE refered=username   )

这是我得到的错误

#1093 - You can't specify target table 'user' for update in FROM clause
4

1 回答 1

0

stackoverflow 中有几个例子。基本上你需要自己加入user表。另外我认为您的计数方法无效(我没有测试,但这应该非常接近):

UPDATE user u1
JOIN (
     SELECT u2.userid, COUNT(u2.userid) AS refs
     FROM user u2
     JOIN user u3
     on u2.username=u3.refered
     GROUP BY u2.userid
     ) u4
ON u1.userid = u4.userid
SET u1.referrals=u4.refs

u2 和 u3 的连接构建userid“被推荐用户”列表
u1 和 u4 的连接允许您从 u4 中进行选择并更新 u1

于 2013-02-01T00:10:25.513 回答