आप जो देख रहे हैं वह है DISTINCT ON ... ORDER BY
Postgresql में मुहावरा महानतम-n को चुनने के लिए -प्रति-समूह
परिणाम (N =1 ) इसलिए समूह बनाने और एकत्र करने के बजाय बस
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
all()
यह नाम से "समूहीकृत" पंक्तियों का चयन करेगा, जिसमें सबसे बड़ा टाइमस्टैम्प मान होगा।
आप अधिकांश समय तारक का उपयोग नहीं करना चाहते हैं, वैसे भी अपने आवेदन कोड में नहीं, जब तक कि आप मैन्युअल एड-हॉक क्वेरी नहीं कर रहे हैं। तारांकन मूल रूप से "FROM
. के सभी कॉलम हैं टेबल/रिलेशन", जो बाद में आपकी धारणाओं को तोड़ सकता है, यदि आप कॉलम जोड़ते हैं, उन्हें पुन:व्यवस्थित करते हैं, और इस तरह।
यदि आप अंतिम परिणाम में टाइमस्टैम्प के आधार पर परिणामी पंक्तियों को ऑर्डर करना चाहते हैं, तो आप उदाहरण के लिए Query.from_self()
क्वेरी को सबक्वेरी में बदलने के लिए, और संलग्न क्वेरी में ऑर्डर करने के लिए:
event_list = Table.query.\
distinct(Table.name).\
filter_by(**filter_by_query).\
filter(*queries).\
order_by(Table.name, Table.timestamp.desc()).\
from_self().\
order_by(Table.timestamp.desc()).\
all()