0

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

-id
-email
-login
-admin
-coins
-cash
-premium -IP
-pass -ref -signup -online -promote -activate
-banned -rec_hash -country -c_changes -sex -daily_bonus











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

我想创建一个前 5 名的推荐表,但我在查询和显示 PHP 时遇到了问题,有人能帮忙吗?

我忘了提如果他们没有推荐人,这表明0我如何将 0 排除在推荐人之外?

4

3 回答 3

2

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

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

但这只会让您获得 5 个 ID,而不是他们的用户行。然后,您可以执行进一步查询以获取实际行。或者,将上述查询与连接一起使用。

于 2012-11-15T23:33:16.673 回答
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;
于 2012-11-15T23:41:45.467 回答
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

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

于 2012-11-15T23:42:20.107 回答