0
我有一個例程,每隔幾個小時運行一次並記錄用戶配置的備份作業。每個作業都會在表格中創建一個條目,條目數量可以是從0到無窮大的任何值(完全取決於用戶具有的作業數量)。PHP MySQL maxTime查詢
在下面的示例中,用戶目前配置了三個備份作業,但我使用的SQL查詢是在一週前從數據拉取備份。我無法弄清楚如何調整我的查詢,以便我只從最近的時間戳中獲取條目而不用做LIMIT(我不能使用LIMIT,因爲我永遠不知道將出現的條目數):
SELECT BACKUP_SET_ID, BACKUP_SET_TYPE, Max(SNAPSHOT_TIME) maxTime
FROM TABLE_snapshots_backupsets
WHERE ACCOUNT_ID='6000001'
GROUP BY BACKUP_SET_ID;
輸出:
+---------------+----------------------------------+---------------------+
| BACKUP_SET_ID | BACKUP_SET_TYPE | maxTime |
+---------------+----------------------------------+---------------------+
| 1359127993672 | FILE | 2013-02-04 08:00:01 |
| 1359145357475 | FILE | 2013-02-04 08:00:01 |
| 1359145395067 | VMware Virtualization | 2013-02-04 08:00:01 |
| 1359145404910 | Microsoft Windows Virtualization | 2013-01-27 12:00:01 |
+---------------+----------------------------------+---------------------+
4 rows in set (0.00 sec)
因此,在上述情況下,我想是的查詢不拉「的Microsoft Windows虛擬化」條目,因爲用戶不再具有配置爲最新的一個數據拉。它應該只是用最新的時間戳來拉入條目。
謝謝!
感謝您的答覆。當我添加WHERE子句時,我根本沒有得到任何記錄...... – Jason
謝謝!好的 - 重新排列的查詢似乎有訣竅。我必須將ACCOUNT_ID添加到第一個WHERE子句,以使其僅返回該帳戶的條目:SELECT BACKUP_SET_ID,BACKUP_SET_TYPE,SNAPSHOT_TIME FROM TABLE_snapshots_backupsets WHERE ACCOUNT_ID ='6000001'AND SNAPSHOT_TIME =(SELECT MAX(SNAPSHOT_TIME)FROM TABLE_snapshots_backupsets WHERE ACCOUNT_ID ='6000001')GROUP BY BACKUP_SET_ID;' – Jason
噢,現在GROUP BY可以被刪除,因爲主查詢中沒有聚合函數了。編輯答案。 –