2015-04-01 61 views
2

选择行我有Mysql的,在最高状态,并显示相关的列

select max(id), timestamp from mytable; 

这返回的最大值标识符过来的数据,但时间戳似乎并没有成为一个匹配的行。我

+----------+--------------------------+ 
| max(id) | from_unixtime(timestamp) | 
+----------+--------------------------+ 
| 1429517 | 2015-01-01 00:00:15  | 
+----------+--------------------------+ 

这是正确的最大值标识符,但时间戳属于不同的记录

+0

你想要的是指向最大ID的时间戳吗? – 2015-04-01 19:49:09

+0

是的,我想要属于记录的时间戳,最大ID为 – area5one 2015-04-01 19:49:53

+2

@Rahul已经回答了您需要的方式!他比我快xD – 2015-04-01 19:50:16

回答

2

尝试这样的:

SELECT id, timestamp FROM mytable 
WHERE id = (SELECT MAX(id) FROM mytable) 

即使用子查询得到max(id)然后得到表中的相应数据。

2

您可以order bylimit做到这一点:

SELECT id, timestamp 
FROM mytable 
ORDER BY id DESC 
LIMIT 1; 

这应该是对idid/timestamp指数相当有效率。

+0

我喜欢这个答案,因为想知道是否可以使用只有一个选择 – area5one 2015-04-01 20:00:26

+0

尽管可能需要DESC在那里吗? 'SELECT id,timestamp FROM mytable ORDER BY id DESC LIMIT 1'否则似乎得到最小值 – area5one 2015-04-01 20:05:07

+0

@ area5one: - 是的,你需要有DESC否则它将默认为ASC并给你最小结果。 – 2015-04-01 20:06:54