2013-01-31 43 views
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 

我想要做的是統計每個用戶引用的人並將該計數保存到每條記錄的refcount。但我該怎麼做?

我試過,但收到的錯誤

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

而你的問題是......? – hjpotter92

回答

0

有計算器中的幾個例子。基本上你需要自己加入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建設「被refered用戶」
的的userid名單加入u1和u4讓你從u4中選擇並更新u1

相關問題