【发布时间】:2019-12-06 18:17:54
【问题描述】:
我想获取具有 max(timestamp) 并按名称分组的表的所有列。
到目前为止,我尝试过的是: normal_query ="从表中选择 max(timestamp) 作为时间"
event_list = normal_query \
.distinct(Table.name)\
.filter_by(**filter_by_query) \
.filter(*queries) \
.group_by(*group_by_fields) \
.order_by('').all()
我得到的查询:
SELECT DISTINCT ON (schema.table.name) , max(timestamp)....
这个查询基本上返回两列名称和时间戳。
然而,我想要的查询:
SELECT DISTINCT ON (schema.table.name) * from table order by ....
它返回该表中的所有列。这是预期的行为,我能够得到所有的列,我怎么能在 python 中正确地得到这个语句?。基本上没有星号。 有人可以帮帮我吗?
【问题讨论】:
-
不完全清楚你在做什么(查询是如何让你失败的,
normal_query到底是什么等等),如果你对星号有问题,阅读一个好的 SQL教程或书籍会让你快速上手。请注意,在 SQL 中,通常可以以多种方式编写相同的查询。 -
感谢您指出,我对可能有帮助的问题几乎没有更新。
-
您似乎真正想要的是名称上不同的行(不一定必须分组),按时间戳降序排列。这是一个例子:stackoverflow.com/questions/44069023/…。此处为纯 SQL 中的相同示例:stackoverflow.com/questions/16914098/….
标签: python postgresql sqlalchemy flask-sqlalchemy