Web2py DAL 查找最新日期的记录
Web2py DAL find the record with the latest date
您好,我有一个具有以下结构的 table。
Table 名称:文档
样本Table结构:
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 日期的值。我想获取 "rows" 内具有最大日期的记录。请提出一个方法。非常感谢帮助。
我的要求扩展到为每个 company_id 为每个 document_name 找到每个这样的记录。
您的方法不会 return 完整行,它只会 return 最后一个 modified_on 值。
要获取 ID 为 1 且 document_name "txn_summary" 公司的最后修改记录,查询将为
query = (db.documents.company_id==1) & (db.documents.document_name=='txn_summary')
row = db(query).select(db.documents.ALL, orderby=~db.documents.modified_on, limitby=(0, 1)).first()
orderby=~db.documents.modified_on
会将return条记录按modified_on
的降序排列(最后修改的记录在第一条),first()
会将select条记录排在第一条.即完整查询将 return 最后修改的记录有公司 1 和 document_name = "txn_summary".
可以有 other/better 方法来实现这一点。希望这对您有所帮助!
您好,我有一个具有以下结构的 table。
Table 名称:文档
样本Table结构:
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 日期的值。我想获取 "rows" 内具有最大日期的记录。请提出一个方法。非常感谢帮助。
我的要求扩展到为每个 company_id 为每个 document_name 找到每个这样的记录。
您的方法不会 return 完整行,它只会 return 最后一个 modified_on 值。
要获取 ID 为 1 且 document_name "txn_summary" 公司的最后修改记录,查询将为
query = (db.documents.company_id==1) & (db.documents.document_name=='txn_summary')
row = db(query).select(db.documents.ALL, orderby=~db.documents.modified_on, limitby=(0, 1)).first()
orderby=~db.documents.modified_on
会将return条记录按modified_on
的降序排列(最后修改的记录在第一条),first()
会将select条记录排在第一条.即完整查询将 return 最后修改的记录有公司 1 和 document_name = "txn_summary".
可以有 other/better 方法来实现这一点。希望这对您有所帮助!