【发布时间】:2017-01-11 05:28:53
【问题描述】:
您好,我有一个具有以下结构的表。
表格名称:DOCUMENTS
示例表结构:
ID | UIN | COMPANY_ID | DOCUMENT_NAME | MODIFIED_ON |
---|----------|------------|---------------|---------------------|
1 | UIN_TX_1 | 1 | txn_summary | 2016-09-02 16:02:42 |
2 | UIN_TX_2 | 1 | txn_summary | 2016-09-02 16:16:56 |
3 | UIN_AD_3 | 2 | some other doc| 2016-09-02 17:15:43 |
我想获取id为1且document_name为“txn_summary”的公司的最新修改记录UIN。
这是有效的 postgresql 查询:
select distinct on (company_id)
uin
from documents
where comapny_id = 1
and document_name = 'txn_summary'
order by company_id, "modified_on" DESC;
这个查询获取我 UIN_TX_2 是正确的。
我正在使用 web2py DAL 来获取此值。经过一些研究,我成功地做到了这一点:
fmax = db.documents.modified_on.max()
query = (db.documents.company_id==1) & (db.documents.document_name=='txn_summary')
rows = db(query).select(fmax)
现在“rows”仅包含 modified_on 日期的最大值,该值具有最大值。我想获取“行”内具有最大日期的记录。请提出一种方法。非常感谢您的帮助。
我的要求扩展到为每个 document_name 的每个 company_id 查找每个此类记录。
【问题讨论】:
-
您是说您想要一个查询来获取每个 company_id/document_name 组合的最后修改记录,还是您想为每个组合执行单独的查询?你能显示你想要的确切结果的 SQL 表达式吗?
-
嗨@Anthony,抱歉回复晚了。是的,我想要每个 company_id/document_name 组合的最后修改记录。我希望使用下面答案中提到的查询在单个(company_id/document_name)组合列表上运行 for 循环。
标签: python postgresql web2py data-access-layer