假设我有两个表都有created_datetime
字段。我怎样才能得到MAX(created_datetime)
,同时考虑到这两者。在SQL中,这是通过UNION
我更愿意使用Django模型来执行此操作,但如果需要,我可以使用原始SQL执行此操作。
答案 0 :(得分:1)
您可以尝试以下操作:
max(Model1.objects.aggregate(max_date = Max('created_datetime'))['max_date'], Model2.objects.aggregate(max_date = Max('created_datetime'))['max_date'])
这不是UNION
,但是你得到了你需要的东西。
NB :max
是一个python函数,Max
是django模型函数(
from django.db.models.aggregates import Max
必须使用Max
)。< / p>
您还可以执行以下操作:
max(Model1.objects.all().values_list('created_datetime',flat=True).extend(Model2.objects.all().values_list('created_datetime',flat=True)))
此处,尚未使用聚合(因此,未使用Max
)。仍然使用了max
的python,并且仍然没有看到类似于UNION的sql,但是,已经使用了2个列表的连接。
你可以看到适合你的东西或其他一些第三种解决方案。我真的很想知道比上面更好的解决方案。 :)
您还可以参考link,看看它是否对您有帮助。
答案 1 :(得分:0)
没有任何其他信息会有点困难,但我认为你想要GREATEST
。
MAX
沿着行运行(即它将许多行转换为一行),GREATEST
沿着列运行(将许多列转换为一列)。
如果您希望两个表中的单最大created_datetime
,您可以这样做:
SELECT GREATEST( MAX(t1.created_datetime), MAX(t2.created_datetime) )
FROM t1
JOIN t2 ON ....
....
MAX(t1.created_datetime)
从t1获取最大日期时间,MAX(t2.created_datetime)
从t2获取最大值,GREATEST
获得这两者中较大的一个。