【问题标题】:How to get the corresponding id of a max field in mysql如何获取mysql中max字段对应的id
【发布时间】:2016-08-05 17:03:52
【问题描述】:

我还是 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。

非常感谢任何见解!

【问题讨论】:

  • 你是说你希望最大值按 id 过期吗?
  • 您需要将最大查询设为子查询,并将其与计算字段的最大值连接回原始表;请记住,如果超过一行的最大值,您可能会在结果中获得多行。
  • @MattCremeens 更新了帖子。我希望问题更清楚:)
  • @zet 针对您的编辑,我已对我的答案进行了补充,这确实有助于澄清问题。谢谢。

标签: mysql sql row


【解决方案1】:

使用order bylimit

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

我认为这是最简单的方法。并且在foo(expires) 上有一个索引,它应该也有最好的性能。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 这对我来说非常有效。感谢您提供清晰而出色的解决方案!
    • 很高兴听到。很高兴您发现此解决方案直观且易于理解。我觉得这是值得的。
    猜你喜欢
    • 2019-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    • 2017-06-10
    • 2017-08-26
    相关资源
    最近更新 更多