我有以下的數據庫結構:複雜的MySQL數據庫查詢
站點表
id | name | other_fields
備份表
id | site_id | initiated_on(unix timestamp) | size(float) | status
所以Backups
表有一個與多對一的關係Sites
表通過連接
而且我想輸出的格式如下
name | Latest initiated_on | status of the latest initiated_on row
的數據和我有以下SQL查詢
SELECT *, `sites`.`id` as sid, SUM(`backups`.`size`) AS size
FROM (`sites`)
LEFT JOIN `backups` ON `sites`.`id` = `backups`.`site_id`
WHERE `sites`.`id` = '1'
GROUP BY `sites`.`id`
ORDER BY `backups`.`initiated_on` desc
的事情是,上述查詢我可以實現我在尋找的東西,但唯一的問題是我沒有得到最新的initiated_on
值。
所以,如果我在backups
有3行與site_id
= 1
,查詢不initiated_on
挑選出具有最高值的行。它只是挑出任何一行。
請幫幫忙,並
在此先感謝。
當你有一個GROUP BY時,你不應該編寫SELECT * - 你將返回的值將是任意的。在大多數DB中,這甚至不是有效的SQL語句。 (即使你不使用GRUOP BY,SELECT *仍然被認爲是一種不好的做法)。 – 2012-02-10 14:55:30
我可以將它更改爲'SELECT sites。*'? – ekhaled 2012-02-10 15:00:14
你還沒有在你的SELECT中加入initiate_on,這可能是爲什麼它沒有返回它。 – CBusBus 2012-02-10 15:26:57