2012-03-09 51 views

回答

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這兩個中較大的一個。

+0

哦,我看到這是一個Django問題以及MySQL問題 - 我對django一無所知,所以也許你知道如何將這個語法翻譯成django。 – 2012-03-09 00:56:50

+0

沒有。這是問題的動機。 – babonk 2012-03-09 01:04:49

1

你可以嘗試以下方法:

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以查看它是否對您有所幫助。

+0

我暫時使用你的建議,但會讓問題變得開放。讓人們提防答案的一件事是驗證兩個查詢集都不是空的,否則你會得到一個錯誤:'不能比較datetime.datetime和NoneType' – babonk 2012-03-09 19:51:29

相關問題