我有5个用户(在表users
上):
User ID (uid) | User Name (uname)
-----------------------------------
1 Fallon
2 Jeremy
3 Matt
4 Peter
5 John
日志详细信息存储在另一个表(logs
)中:
Log ID (logid) - User ID (uid)
现在,我希望以大多数记录时间的顺序表示用户列表。登录最多的用户将位于顶部,第二大登录用户将是第二个。像:
因为日志存储在一个表中而用户详细信息存储在另一个表中。我怎么能,我应该用什么查询来制作如上所列的列表。请帮忙。
答案 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