[英]How to get the corresponding id of a max field in mysql
我还是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 | |
+----------+-------------+------+-----+---------+-------+
基本上,我想知道是否有一种方法可以获取到期字段的最大日期,然后打印出相应的字段,例如user_id和id。 到目前为止,这是我目前用于从命令行获取最大日期的命令
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。
非常感谢任何见识!
如果您只想要与该(最大)日期相对应的id
和user_id
,则应执行以下操作
select expires, id, user_id
from foo
where expires in
(select max(expires)
from foo)
使用order by
limit
:
select f.*
from foo f
order by f.expires desc
limit 1;
我认为这是最简单的方法。 并且使用foo(expires)
的索引,它也应该具有最佳性能。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.