MySQL ORDER BY另一个表中的最大行数

时间:2012-10-04 17:40:08

标签: php mysql sql

  

可能重复:
  MySQL ORDER BY total rows of user in another table

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

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

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

Log ID (logid) - User ID (uid)

现在,我希望以大多数记录时间的顺序表示用户列表。登录最多的用户将位于顶部,第二大登录用户将是第二个。像:

  1. Matt登录了57次。
  2. 彼得登录了43次。
  3. Fallon登录了35次。
  4. Jeremy登录了32次。
  5. John登录了23次。
  6. 因为日志存储在一个表中而用户详细信息存储在另一个表中。我怎么能,我应该用什么查询来制作如上所列的列表。请帮忙。

3 个答案:

答案 0 :(得分:3)

这只是一个涉及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

答案 1 :(得分: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

答案 2 :(得分: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