2013-04-13 29 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