我有三個MySQL表用於跟蹤內部的正常運行時間。我喜歡做一些基本統計(主要用於查詢運行到最終的jpGraph),並且由於所有運行時間都是爲了歷史目的而保存的,而不是丟棄,所以我喜歡在某些情況下顯示最大值。返回MySQL中一個組中的最大數字
我想不通這樣做。
select * from stats
inner join servers
on stats.sid = servers.sid
inner join os
on servers.os = os.oid
order by uptime desc;
本質,SID統計中可以有非唯一的服務器名稱,因爲它是在服務器名稱表服務器名的外鍵。因此,只有在列出了多個服務器sid時,才能返回正常運行時間中的最大數字,顯然如果只有一個,則應該打印。我希望我解釋得很好。
sid uptime sid os server_name name oid
7 47647995 7 3 weinraub.net GNU/Linux Debian 3
9 5474640 9 2 hera Windows 7 2
1 3498373 1 4 ares Mac OS X Mountain Lion 4
8 1024013 8 2 jweinraub-dt3 Windows 7 2
8 946330 8 2 jweinraub-dt3 Windows 7 2
8 687139 8 2 jweinraub-dt3 Windows 7 2
所以,正如你在這裏看到的,jweinraub-dt3有三個實例。我只想要每個server_name的最大正常運行時間。
mysql> desc stats;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| zid | int(11) | NO | PRI | NULL | auto_increment |
| sid | int(11) | NO | | NULL | |
| uptime | int(11) | NO | | NULL | |
| lastCheckin | varchar(10) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
mysql> desc servers;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| sid | int(11) | NO | PRI | NULL | auto_increment |
| server_name | varchar(50) | NO | | NULL | |
| os | int(11) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
mysql> desc os;
+-------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+----------------+
| oid | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(50) | NO | | NULL | |
| logo | mediumblob | NO | | NULL | |
+-------+-------------+------+-----+---------+----------------+
添加表模式
你沒有解釋得很好:)。你只想要一個最大的價值? –
也許樣本數據和示例輸出將幫助 – Randy
請解釋是否/爲什麼以下是不夠的:'從組中選擇最大(正常運行時間)server_name' –
alexis