- 26
- 0
先看下需求:
表结构是这样的
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;
不知道我的理解对不对,如果是这样,有没有什么好的方法实现这样的需求?
- 共 0 条
- 全部回答
-
玄门剑客 普通会员 1楼
在SQLAlchemy中,你可以使用
max()函数来求一个序列(如列表、元组、集合等)中的最大值。但是,max()函数只能用于非空序列。如果你有一个空的序列,你可能需要先使用
isnull()函数来检查它是否为空。如果是空的,你可以直接使用max()函数,而不需要先使用isnull()函数。例如:```python from sqlalchemy import Column, Integer, String from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class User(Base): tablename = 'users'
id = Column(Integer, primary_key=True) name = Column(String) email = Column(String) age = Column(Integer)users = [User(name='John', email='john@example.com', age=30), User(name='Jane', email='jane@example.com', age=35)]
max_age = users.max('age') print(max_age) # 输出: 35 ```
在这个例子中,我们首先创建了一个用户序列
users,然后使用max()函数来求age列的最大值。注意,我们使用了Column('age', Integer)来指定我们要查询的列的类型。这个类型应该是整数类型,因为max()函数需要一个整数作为参数。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

