Php 需要有关SQL语句的帮助吗
我正在尝试从我的用户表中获取一个具有最多引用的用户id。很抱歉标题不清楚,我不知道这叫什么 使用PHP和MYSQL 例如:Php 需要有关SQL语句的帮助吗,php,sql,Php,Sql,我正在尝试从我的用户表中获取一个具有最多引用的用户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, `reg
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
我正在尝试查找在所有用户表中具有最多相同引用的用户id。假设用户4在引用varchar中有10个具有相同内容的不同用户。我如何选择“查看用户4”,而不必检查每个用户,记录他们的推荐,然后选择一个推荐最多的用户
必须有一个更简单的方法
感谢您的帮助。谢谢
编辑:抱歉,引用是另一个用户的
名称
,而不是添加到SQL中的用户id
:
SELECT referral, count(*) AS count FROM users
WHERE referral IS NOT NULL AND referral != ''
GROUP BY referral ORDER BY COUNT(referral) DESC
试试这个,这个对你有用。但是试着考虑我上面的建议。但是现在,使用这个
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
似乎是因为其他用户没有推荐,所以它也在计算推荐数量,并返回一个空白的顶级推荐 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
谢谢你的帮助 那么,这里的referral是另一个用户的用户id?不,对不起,referral是另一个用户的
name
的varchar。我没有想到当我制作原始表格时(已经晚了),我应该按用户的id去做。事实上,我应该创建一个完整的新表,只用于转介,并将其加入到用户表中。。。但是现在我被卡住了,因为这个网站是实时的,并且已经有10000个用户使用这个设置。但是,这可能会给你的未来发展带来问题。此处的for name不是唯一的实体。此外,如果您的系统上有“编辑配置文件”,在这种情况下,编辑名称将导致您丢失引用。用户无法更改其名称,他们在注册时被锁定。通常我会为这样的东西做一个新的表格,我一直在努力完成这个项目。现在它在咬我的屁股!顶部查询为所有转介返回1,底部查询为user_id 1 count 1。在这种情况下,您能给我一个表转储或类似的东西吗?还是多排?它在我的类似表中对我有效。因此,这里每个用户只有一个推荐,因此您无法获得推荐最多的用户id,因为将始终存在“1”。所以我不确定你想要实现什么。您想获得最多存在的推荐吗?其他情况下,您需要创建一个userandferral表来保存用户推荐关系。是的,我希望获得推荐显示最多的内容。当我进行站点升级时,我将修复此问题,并编写一些脚本将所有内容移到新设置中。。但现在我需要一种方法来获取存在的东西,最短的us素数变为空白[num_of_refferals:1595]。