首先,我对标题感到非常抱歉。我真的不知道如何正确地表达这个问题。如果有人能想到更好的措辞,请编辑或告诉我。
关于这个问题:
我有两张桌子。usage_logs
和servers
。servers
存储我的客户端与特定服务器通信所需的所有服务器信息。usage_logs
,当然,存储哪个用户使用了特定的服务器、哪个服务器以及使用了多长时间。
我需要一个查询来选择当前由最少用户使用的服务器的服务器信息。
这是我当前的查询:
SELECT servers.ip, servers.serverkey, servers.port, servers.id, COUNT(usage_logs.sid) nbr
FROM servers
LEFT JOIN usage_logs ON servers.id = boot_logs.sid
WHERE usage_logs.time+usage_logs.date > 1344076143
AND usage_logs.sid IS NOT NULL
AND servers.status='ONLINE'
GROUP BY sid
ORDER BY nbr DESC;
1344076143
可以用当前时间代替(在我的实际脚本中)。这个查询几乎可以工作。它正在选择一个服务器,但由于其他服务器实际上并未在使用中,因此它不符合WHERE usage_logs.time+usage_logs.date > 1344076143
标准,因此未在输出中列出。
我需要一种方法让它仍然列出该服务器,但我不知道如何。
另外,这usage_logs.sid IS NOT NULL
是因为我最近才开始尝试改进使用跟踪,所以在今天之前,sid
不存在。
usage_logs.sid
是服务器 ID,最多匹配servers.id
.
我一直在谷歌上搜索这个地狱,实际上JOIN
之前甚至从未使用过声明,所以也请不要犹豫,纠正你发现的任何问题。我非常想提高我的 MySQL 技能。