鍍金池/ 問答/數(shù)據(jù)庫/ sqlalchemy fun.max 求最大值的問題

sqlalchemy fun.max 求最大值的問題

先看下需求:
表結(jié)構(gòu)是這樣的

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

需求是以ob_id為基準(zhǔn),ob_id相同的說明是一類數(shù)據(jù),但是它們狀態(tài)不一樣(status)
需要取出時(shí)間最大的數(shù)據(jù),即對(duì)于上述數(shù)據(jù)來說,ob_id相同的有a1,id是1和3,應(yīng)該取出時(shí)間為13:01的
我的查詢語句是這樣寫的:

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

這樣去查,最大時(shí)間可以得到,但是想把查到最大時(shí)間對(duì)應(yīng)的這條數(shù)據(jù)拿出來,這里拿id,這樣并不對(duì)。我的理解是進(jìn)行了分組后,是可以求出該組的最大值,但是并不能拿到更多的數(shù)據(jù)了

我用原生語句去查也不行

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

不知道我的理解對(duì)不對(duì),如果是這樣,有沒有什么好的方法實(shí)現(xiàn)這樣的需求?

回答
編輯回答
喵小咪
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