-1

可能重复:
MySQL ORDER BY 另一个表中用户的总行数

我有 5 个用户(在桌子上users):

User ID (uid) | User Name (uname)
-----------------------------------
1               Fallon
2               Jeremy
3               Matt
4               Peter
5               John
  • 到目前为止,Fallon (uid 1) 已登录 35 次。
  • Jeremy 登录 32 次。
  • 马特登录了 57 次。
  • 彼得登录了 43 次。
  • 约翰登录了 23 次。

日志详细信息存储在另一个表 ( logs) 中:

Log ID (logid) - User ID (uid)

现在我想按最多登录时间的顺序表示一个用户列表。登录次数最多的用户将位于顶部,登录次数第二多的用户将排在第二位。喜欢:

  1. 马特登录了 57 次。
  2. 彼得登录了 43 次。
  3. 法伦登录了 35 次。
  4. Jeremy 登录 32 次。
  5. 约翰登录了 23 次。

因为日志存储在一个表中,而用户详细信息存储在另一个表中。我怎样才能,我应该使用什么查询来制作像上面这样的列表。请帮忙。

4

3 回答 3

3

这只是一个涉及 a 的简单查询JOIN

SELECT users.uid, users.uname, COUNT(logs.logid) AS logins 
  FROM users 
  LEFT JOIN logs ON logs.uid=users.uid 
  GROUP BY users.uid
  ORDER BY logins DESC
于 2012-10-04T17:42:05.433 回答
2

未经测试,但我相信这应该有效:

SELECT u.`uid`, u.`uname`, COUNT( l.`logid` ) AS count 
FROM `users` AS u, `logs` AS l 
WHERE u.`uid` = l.`uid` 
GROUP BY l.`uid` 
ORDER BY count DESC
于 2012-10-04T17:43:21.560 回答
1
  SELECT users.uid, users.uname, COUNT(logs.logid) as logins 
  FROM users, logs 
  where  logs.uid=users.uid 
  GROUP BY logs.uid
  ORDER BY logins DESC
于 2012-10-04T17:43:16.763 回答