2013-04-13 57 views
0

我有MySQL數據庫表的結構描述如下。更新時間字段最接近的數據庫條目()

uid   info   time 
6   null   2013-04-12 23:00:00 
5   something  2013-04-12 22:00:00 
4   something  2013-04-10 09:00:00 
3   something  2013-04-09 19:00:00 
2   something  2013-04-02 10:00:00 
1   something  2013-04-01 11:00:00 

在單個MySQL查詢中如何更新具有最新時間值的行?

一個可能的解決方案是

SELECT uid FROM my_table ORDER BY time DESC LIMIT 1 
UPDATE my_table SET info = 'something' WHERE uid = 'uid_received_in_previuos_query' 

卻是兩個連續的查詢,解決方案......

回答

0

這就是我正在尋找

UPDATE my_table SET info = 'something' ORDER BY time DESC LIMIT 1; 
0

如果我得到它的權利,你要尋找的MySQL NOW() function

用例:

UPDATE my_table SET info='something', time=NOW() WHERE id=6 

或者,如果你正在尋找最新的一行什麼UDPATE,你可以

UPDATE my_table SET info='something', time=NOW() ORDER BY time DESC LIMIT 1 
+0

不是我正在尋找... – zavg

+0

@zavg編輯。現在怎麼樣? :) – Powerslave

+0

謝謝,但不起作用。我發佈了我發現的其他答案。 – zavg

0

你可以做到這一點,如下

WHERE time > '2013-04-12 00:00:01' and time < '2013-04-12 23:59:59' 

For Dynamic Date

WHERE time > date ("Y-m-d").'00:00:01' and time < date ("Y-m-d").'23:59:59' 
+0

我需要使用時間字段中的最新值更新行。我現在不完全是這個價值。 – zavg

+0

如果有幫助,請參閱我的更新回答? –

+0

看看我的帖子更新,我認爲你誤會了我一點 – zavg

0

這應該工作

update tableName first inner join (SELECT uid FROM tableName ORDER BY time DESC LIMIT 1) as second SET first.info = 'something' where first.uid = second.uid 
+0

我需要更新,而不是選擇 – zavg

+0

我發佈了下面找到的正確答案。 – zavg