鍍金池/ 問答/數據庫/ sqlalchemy fun.max 求最大值的問題

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相同的說明是一類數據,但是它們狀態(tài)不一樣(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;

不知道我的理解對不對,如果是這樣,有沒有什么好的方法實現這樣的需求?

回答
編輯回答
喵小咪
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
2018年8月10日 16:50