如何获取mysql中max字段对应的id
我还是mysql命令的新手,我学会了如何获取列的最大值和列的计数。我的数据库名为db,我的表(名为“foo”)如下所示:如何获取mysql中max字段对应的id,mysql,sql,row,Mysql,Sql,Row,我还是mysql命令的新手,我学会了如何获取列的最大值和列的计数。我的数据库名为db,我的表(名为“foo”)如下所示: +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | id | va
+----------+-------------+------+-----+---------+-------+
| 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
非常感谢您的任何见解 如果您只需要与该(最大)日期对应的
id
和user\u id
,那么类似的操作就可以了
select expires, id, user_id
from foo
where expires in
(select max(expires)
from foo)
使用
按
排序和限制
:
select f.*
from foo f
order by f.expires desc
limit 1;
我认为这是最简单的方法。如果在
foo(expires)
上有一个索引,它也应该有最好的性能。你是说你想按id计算max expires吗?你需要将max查询作为一个子查询,并将其连接回max value上的原始表,该表对应于计算它的字段;请记住,如果有多行具有最大值,则结果中可能会有多行。@MattCremeens对文章进行了更新。我希望问题更清楚:)@zet我在回答你的编辑时做了一个附录,这确实有助于澄清问题。谢谢。这对我来说非常有效。感谢您提供的清晰而优秀的解决方案!很高兴听到。我很高兴您发现这个解决方案直观易懂。我觉得这很有价值。