sqlalchemy fun.max 求最大值的问题

先看下需求:
表结构是这样的

Table
id   time    status  ob_id
1     12:50    2    a1
2     12:53    3    b1
3     13:01    3    a1

需求是以ob_id为基准,ob_id相同的说明是一类数据,但是它们状态不一样(status)
需要取出时间最大的数据,即对于上述数据来说,ob_id相同的有a1,id是1和3,应该取出时间为13:01的
我的查询语句是这样写的:

res=db.session.query(Table.id,func.max(Table.time)).order_by(Table.time.desc()).group_by(Table.ob_id).all()

这样去查,最大时间可以得到,但是想把查到最大时间对应的这条数据拿出来,这里拿id,这样并不对。我的理解是进行了分组后,是可以求出该组的最大值,但是并不能拿到更多的数据了

我用原生语句去查也不行

 SELECT id, GROUP_CONCAT(time), MAX(time) FROM Table GROUP BY ob_id;

不知道我的理解对不对,如果是这样,有没有什么好的方法实现这样的需求?

阅读 5.2k
2 个回答
SELECT t1.* 
 FROM Table t1
   inner join (SELECT ob_id,MAX(time) mx_time FROM TABLE GROUP BY ob_id) t2 on t1.ob_id=t2.ob_id and t1.time=t2.mx_time
新手上路,请多包涵

求python语言 sqlalchemy

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题