MySQL-获取给定列值列表的最新记录

时间:2018-12-28 22:26:01

标签: mysql sql hibernate

我具有以下表格结构:

请求表:

 id  insret_time             account id
 ------------------------------------
 1  2018-04-05 08:06:23       abc
 2  2018-09-03 08:14:45       abc
 3  2018-08-13 09:23:34       xyz
 4  2018-08-04 09:25:37       def
 5  2018-08-24 11:45:37       def

我需要找到帐户ID abc和def的最新记录。我不在乎xyz。

我尝试使用分组依据和内部联接方法来获取结果,但未成功将结果限制为我关注的用户列表。 请指教

更新: 感谢大家的反馈。赞赏!我需要整行作为输出。自从它自动递增以来,我一直使用id列而不是时间戳来获取最新记录。这是我最终想出的结果,它为我提供了所需的输出:

select t.* FROM table t
join (select max(table.id) as maxNum from table 
where account_id in ('abc','def') group by account_id) tm on t.id = tm.maxNum;

3 个答案:

答案 0 :(得分:0)

我认为这就是您想要的

  select account_id,max(insret_time)
  from table where account_id in ('abc', 'def')
  group by account_id

答案 1 :(得分:-1)

仅使用where获得insert_time的最大值,而in仅包含'abc','def':

select t.* from tablename as t where
t.accountid in ('abc', 'def') and
t.insert_time = (select max(insert_time) from tablename where tablename.accountid = t.accountid)

答案 2 :(得分:-1)

您可以使用not in忽略xyz的记录和下达命令desc

select account_id,max(insert_time) from table where account_id not in ('xyz') group by account_id order by id desc

您也可以仅将!=运算符用于一个表达式:

select account_id,max(insert_time) from table where account_id!='xyz' group by account_id order by id desc

我希望这会有所帮助:)