说我有这样的记录:
user_id user_data_field created
------- --------------- -------
1 some data date_a
2 some data date_b
1 some data date_c
1 some data date_d
2 some data date_e
我应该怎么做才能获得最近日期的所有用户记录(假设最近的日期不是底部的日期......可以在任何地方)?我使用in_
子句来获取sqlalchemy
中的批量用户:
session.query(Table).filter(Table.user_id.in_([1,2])).order_by(Table.created.desc())
只是按创建的顺序对它们进行排序。此外,如果我只是在本声明的末尾添加first()
子句,它只会让我获得1行。那么,我在sqlalchemy中有办法完成它吗?感谢。
答案 0 :(得分:2)
@khan:你的解决方案几乎正常,但你的答案评论中描述了这个漏洞。
下面的代码解决了这个特定问题(但仍然依赖于同一个created
不会重复user_id
个值的事实:
subq = (
session
.query(MyTable.user_id, func.max(MyTable.created).label("max_created"))
.filter(MyTable.user_id.in_([1, 2]))
.group_by(MyTable.user_id)
.subquery()
)
q = (
session.query(MyTable)
.join(subq, and_(MyTable.user_id == subq.c.user_id,
MyTable.created == subq.c.max_created))
)
答案 1 :(得分:1)
对我来说,您正在寻找的SQL查询类似于:
SELECT user_id, MAX(created) FROM Table WHERE user_id IN (1, 2) GROUP BY user_id;
所以现在的交易是使用sqlalchemy来翻译它,我猜这样会有:
session.query(Table.user_id, func.max(Table.created)).filter(Table.user_id.in_([1,2])).group_by(Table.user_id).all()
答案 2 :(得分:0)
好的,我找到了一条出路,使用UIButton
和 func addToAttributedString(attString : NSMutableAttributedString, plainString : String, font : UIFont, preferredSize : CGFloat, maxWidth : CGFloat)
功能:
subquery
以更清洁的方式,我们可以写出:
max