假设我有两个都具有created_datetime字段的表。如何将MAX(created_datetime)纳入考虑范围。在SQL中,这是通过UNION完成的

我更喜欢使用Django模型来执行此操作,但是如果需要,我可以使用原始SQL来执行此操作。

最佳答案

您可以尝试以下方法:

max(Model1.objects.aggregate(max_date = Max('created_datetime'))['max_date'], Model2.objects.aggregate(max_date = Max('created_datetime'))['max_date'])


这不会执行UNION,但是您将获得所需的内容。

N.B. :max是python函数,而Max是django模型函数(from django.db.models.aggregates import Max必须用于Max)。

您还可以执行以下操作:

max(Model1.objects.all().values_list('created_datetime',flat=True).extend(Model2.objects.all().values_list('created_datetime',flat=True)))


在这里,未使用聚合(因此,未使用Max)。仍然使用python的max,仍然看不到sql的UNION之类的东西,但是使用了2个列表的连接。

您可以查看最适合自己的解决方案,或者其他任何第三种解决方案(如果有的话)。我真的很想知道比上述更好的解决方案。 :)

您也可以参考link以查看它是否对您有帮助。

关于mysql - 从Django中的两个表中获取MAX()-等同于使用SQL UNION,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9627427/

10-16 18:54