2011-11-15 22 views
0

我正在嘗試進行某種SQL查詢,其中只有10位推薦人數最多但最少推薦1位的人。複雜查詢 - 獲取轉介次數最多的人

我的表是這樣的:

CREATE TABLE IF NOT EXISTS `beta_list` (
    `id` int(10) NOT NULL AUTO_INCREMENT, 
    `email` varchar(250) NOT NULL, 
    `referrer` int(10) NOT NULL, 
    `referral_code` int(10) NOT NULL, 
    UNIQUE KEY `id` (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1; 

我已經試過這樣的事情:

SELECT 
    email, 
    referral_code as refcode, 
    (SELECT COUNT(*) FROM beta_list WHERE referrer=refcode) as referrals 
    FROM 
    beta_list 
    WHERE 
    referrals > 0 
    ORDER BY 
    referrals DESC 
    LIMIT 
    10 

但它只是說 「未知列 '推薦' 在 'where子句中'」。

我不是sql大師,我只是剛剛開始學習更復雜的sql查詢,所以任何幫助如何實現這樣的東西將深受讚賞!

乾杯!

+0

什麼refcode,轉診和電子郵件的關係。多一點生意會幫助很多人。 – Zohaib

回答

1

試試這個 - 添加外部查詢提取從內部查詢的結果 -

select ref.email, ref.refcode, ref.referrals from 
(
    SELECT 
    email, 
    referral_code as refcode, 
    (SELECT COUNT(*) FROM beta_list WHERE referrer=refcode) as referrals 
    FROM 
    beta_list 
) as ref 
WHERE 
    ref.referrals > 0 
ORDER BY 
    ref.referrals DESC 
LIMIT 
    10 
+1

太棒了!完美的作品,非常感謝:)! (需要等待2分鐘才能接受答案) – MrE

1

給這個一展身手:

SELECT email,referral_code as refcode,count(*) as referrals 
FROM beta_list 
WHERE referrer = referral_code 
GROUP BY email,referral_code 
ORDER BY referrals DESC 
LIMIT 10;