我在 mysql 上失败了,真的可以得到一些帮助。我不知道它会被称为什么,我所有尝试使用 DISTINCT 和 GROUP BY 的组合都没有成功。
我有一个包含这些列的服务器监控数据表:
nStatusNumber
Bandwidth
Load
Users
ServerNumber
DiskFree
MemFree
TimeStamp
**nStatusNumber** - A unique number increasing for each entry
**ServerNumber** - A unique number for each server
为此,我需要在仪表板的顶部显示每个唯一服务器的最新报告。
// 我们监控了多少台服务器?
$nNumServers = mysql_numrows(mysql_query("SELECT DISTINCT(ServerNumber) FROM server_status;"));
// 获取我们的服务器列表
$strQuery = "SELECT * FROM server_status ORDER BY nStatusNumber DESC limit ".$nNumServers.";";
然后循环遍历结果,直到我们点击 $nNumServers 。起初这很有效,直到服务器开始停机/上升并且报告顺序变得混乱。假设有 20 台服务器,最近的 20 个结果不一定是每台服务器的 1 个。
我试图尽快解决这个问题,但失败了。到目前为止,我已经尝试了 DISTINCT 和 GROUP BY 的各种组合,但都没有成功,并且希望能就我看不到答案的可能是一个令人尴尬的简单问题提供任何指导。
谢谢!
PS - 这是我一直在尝试的示例查询,显示了我遇到的问题。检查“nStatusNumber”字段,这些应该只显示每个服务器的最新结果 - http://pastebin.com/raw.php?i=ngXLRhd6
PPS - 设置 max(nStatusNumber) 不会给出准确的结果。我不想要一些平均/总和/中位数,我需要每台服务器报告的最新实际数据。以下是查询的更多示例结果:http://pastebin.com/raw.php?i= eyuPD7vj