如何在mysql中获取max字段的相应id

时间:2016-08-05 17:03:52

标签: mysql sql row

我还是mysql命令的新手,我学会了如何获取列的最大值和列数。我的数据库名为db,我的表(名为" foo")如下所示:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | varchar(64) | NO   | PRI | NULL    |       |
| expires  | datetime    | YES  | MUL | NULL    |       |
| extra    | text        | YES  |     | NULL    |       |
| valid    | tinyint(1)  | NO   |     | NULL    |       |
| trust_id | varchar(64) | YES  | MUL | NULL    |       |
| user_id  | varchar(64) | YES  | MUL | NULL    |       |
+----------+-------------+------+-----+---------+-------+

基本上,我想知道是否有办法获取expires字段的最大日期,然后打印出相应的字段,如user_id和id。到目前为止,这是我目前用于从命令行中的expires获取最大日期的命令

mysql -u root db -e "select max(id) from foo;"

仅这一点就会给我:

+---------------------+
| max(expires)        |
+---------------------+
| 2016-08-05 17:54:44 |
+---------------------+

我想做的就是回来:

+---------------------+--------+--------+
| max(expires)        | id     | user_id|
+---------------------+--------+--------+
| 2016-08-05 17:54:44 |cd97eb4 | 2bf2cec|
+---------------------+--------+--------+ 

那么我将获得最大到期日期以及该到期日期的ID和用户ID。

非常感谢任何见解!

2 个答案:

答案 0 :(得分:1)

如果您只想要iduser_id对应于该(最大)日期,那么应该这样做

select expires, id, user_id
from foo
where expires in
    (select max(expires) 
     from foo)

答案 1 :(得分:1)

使用order bylimit

select f.*
from foo f
order by f.expires desc
limit 1;

我认为这是最简单的方法。使用foo(expires)上的索引,它也应该具有最佳性能。