假设我有两个都具有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/