models.py 里这么定义的
class Var(db.Model):
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
name = db.Column(db.String(20))
time = db.Column(db.Integer)
......
现在假设有这么几个数据
| id | name | time |
| 1 | a | 1500016227 |
| 2 | a | 1500016237 |
| 3 | b | 1500016227 |
| 4 | b | 1500016237 |
| 5 | c | 1500016216 |
| 6 | c | 1500016226 |
原来单独获得某一个 name 的最新几条,返回不同 name 就多次查询。
model = Var.query.filter_by(name).order_by(Var.time.desc()).limit(1).all()
现在需要同时获得几个 name 的最新几条,比如上面的数据中,同时获得 b 和 c 的最新一条数据,应该让其返回 id 为 4 和 6 两条。
试了 distinct 和 group_by,前面只能写成 db.session.query(Var.name).group_by(Var.name),这样还得再循环单独查询后添加到列表里去。请问有没有什么好的方法?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.