PHP MySQL前5个参考功能

时间:2012-11-15 23:30:20

标签: php mysql function ranking

我有一个名为users的表格,如下所示:

-id
-email
-Login
-admin
-coins
- 货币
-premium
-IP
-pass
-REF
-signup
-online
- 促进
-activate
-banned
-rec_hash
- 国家 -c_changes
-sex
-daily_bonus

如果说id为81的用户推荐10个人,那么这10个人的ref列中会有“81”。

我想创建一个前5个推荐表,但我遇到查询问题并在PHP中显示,是否有人能够提供帮助?

如果他们没有任何转介,我会忘记提醒0我如何排除0作为转介?

3 个答案:

答案 0 :(得分:2)

您可以在单个SQL语句中执行此操作:

SELECT ref, COUNT(*) AS num FROM users
GROUP BY ref ORDER BY num DESC LIMIT 5

但是这只会获得5个ID,而不是用户行。然后,您可以执行进一步的查询以获取实际行。或者,将上述查询与联接一起使用,将其全部合并到一起。

答案 1 :(得分:0)

  

如果他们没有推荐它显示为0

凌乱的设计 - 这应该是空的。无论...

 SELECT u.login, ilv.referred
 FROM
 (SELECT ref, COUNT(*) AS referred
   FROM users
  WHERE ref IS NOT NULL
  AND ref>0
  GROUP BY ref
  ORDER BY COUNT(*) DESC
  LIMIT 0,5) ilv
INNER JOIN users u
ON ilv.ref=users.id
ORDER BY ilv.referred DESC;

答案 2 :(得分:0)

或者像这样的SQL:

SELECT u.*, COUNT(*) as referrers FROM users r JOIN users u ON r.ref = u.id
GROUP BY u.id ORDER BY referrers DESC LIMIT 5

即使在同一个表上使用连接,也只使用一个语句会更快。