我的这个表“user”包含以下表格。
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
答案 0 :(得分: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