如何用单条SQL查询获取表各列最大值(SQLite、Flask-SQLAlchemy场景)
问题原因
你之前调用的MAX(col1, col2, col3)是SQLite的多参数比较语法,作用是返回每一行中col1、col2、col3三个字段的最大值,所以得到的是每行的最大值结果,和你要的「每列全局最大值」需求不符。
正确实现方式
原生SQL写法
直接在查询中分别为每一列调用MAX函数即可,单条语句就能返回结果:
SELECT MAX(col1) AS max_col1, MAX(col2) AS max_col2, MAX(col3) AS max_col3 FROM 你的表名;
执行后返回的单条结果依次就是col1、col2、col3的最大值,对应你示例数据就是(93, 88, 75),你可以自行转换为你期望的[(93,), (88,), (75,)]格式。
Flask-SQLAlchemy写法
假设你的表对应的模型类为TestTable,用func.max分别指定每列即可:
from sqlalchemy import func # 执行查询 max_result = db.session.query( func.max(TestTable.col1).label("max_col1"), func.max(TestTable.col2).label("max_col2"), func.max(TestTable.col3).label("max_col3") ).first() # 取值示例 col1_max = max_result.max_col1 # 93 col2_max = max_result.max_col2 # 88 col3_max = max_result.max_col3 # 75
内容的提问来源于stack exchange,提问作者manacoder
相关产品推荐
相关产品推荐

