我正在尝试从拥有最多推介的用户表中获取user_id。对于模糊的标题感到抱歉,我不确定这是什么。
使用PHP和MYSQL。
示例:
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(180) CHARACTER SET utf8 NOT NULL,
`ip` varchar(180) CHARACTER SET utf8 NOT NULL,
`registered` varchar(180) CHARACTER SET utf8 NOT NULL,
`lastonline` varchar(180) CHARACTER SET utf8 NOT NULL,
`referral` varchar(180) CHARACTER SET utf8 NOT NULL,
`url` varchar(180) CHARACTER SET utf8 NOT NULL,
`points` float NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=6544 ;
用户看起来像这样,
1, 'username', 'ipaddy', 'date', 'date', '**REFERRAL**', 'url', 13633
我正在尝试在所有用户表中找到具有最多相同引荐的user_id。让我们说用户4有10个不同的用户在引用varchar中具有相同的东西。如何选择查看用户4而不通过每个用户,记录他们的推荐,然后选择最多的用户。
必须有一种更简单的方法......
感谢任何帮助。谢谢!
编辑:抱歉,推介是另一位用户的name
,而不是user_id
。
答案 0 :(得分:2)
在SQL中添加了一点:
SELECT referral, count(*) AS count FROM users
WHERE referral IS NOT NULL AND referral != ''
GROUP BY referral ORDER BY COUNT(referral) DESC
答案 1 :(得分:1)
试试这个,这对你有用。但请尝试考虑我的建议。但是现在,请使用这个。
SELECT
ref.prime,
ref.num_of_refferals
FROM
(
SELECT
referral AS prime,
COUNT(*) AS num_of_refferals,
NAME
FROM
users
WHERE
referral != ''
GROUP BY
referral
) AS ref
ORDER BY
ref.num_of_refferals
DESC
LIMIT 1
答案 2 :(得分:0)
似乎因为其他用户没有推介,它也在计算它们并为最高推荐返回空白。
Papaiatis提供以下内容
SELECT referral FROM users GROUP BY referral ORDER BY COUNT(referral) DESC LIMIT 1
我确保推荐字段不为空,我想抓住用户推荐的数量。
SELECT referral, count(*) as count FROM users WHERE referral != '' GROUP BY referral ORDER BY COUNT(referral) DESC
感谢您的帮助!