擅长:python、mysql、java
<p>您可以使用<code>subquery</code>实现这一点,如下所示</p>
<pre><code>SurveyResult.objects.filter(
id__in=SurveyResult.objects.order_by('food', '-timestamp').distinct('food')
).order_by('-timestamp')
</code></pre>
<p><strong>说明:</strong></p>
<p>所以基本上<code>subquery</code>涉及对多个<code>query</code>的求值,在您的例子中,我们正在求值两个查询。上述<code>queryset</code>的SQL如下所示</p>
<pre><code>SELECT "id", "emoji", "personality", "food", "timestamp", "rating"
FROM "appname_surveyresult"
WHERE id IN (
SELECT "id", DISTINCT ON ("food")
FROM "appname_surveyresult"
ORDER BY "food" ASC, "timestamp" DESC
)
ORDER BY "timestamp" DESC
</code></pre>
<p>因此,首先内部(就像数学一样)查询求值,其结果将成为外部查询的输入,从而在不同的</strong>中生成最新的</strong>。阅读<a href="https://www.dofactory.com/sql/subquery" rel="nofollow noreferrer">this</a>了解更多信息。你知道吗</p>