2012-09-13 43 views
10

我有不幸的的Django 1.4.1使用MySQL的數據庫 獨特的功能只適用於POSTGRESQL,如果我得到它的權利。用於獲取多個值的Django的MySQL不同的查詢

我必須做出不同的查詢由多個值,而只有不同的一個,

等; 這一個適用於POSTGRE,但不適用於MYSQL, 我得到以下錯誤;

DISTINCT ON領域不受此數據庫後端

staff = Staff.objects.order_by('person__full_name').distinct('person__full_name') 

然後我試圖

staff = Staff.objects.values('person__full_name','staff_job_categories').distinct().order_by('person__full_name') 

支持,但因爲我得到同樣的員工崗位類別我沒有得到不同的值。但是當我不包含它時,我無法獲得它作爲數組。

有什麼想法?

回答

16

.distinct([*fields])只適用於PostgresSQL。

distinct文檔

這裏的區別。對於正常的distinct()調用,數據庫在確定哪些行是不同的時候會比較每行中的每個字段。對於具有指定字段名稱的distinct()調用,數據庫將僅比較指定的字段名稱。

如所述,記錄中的所有字段都被檢查。在你的情況下,你很可能會得到具有不同字段值的記錄(如果你正在查詢多個表ManyToMany或ForeignKey關係,則更有可能出現這種情況)。

鞏固作爲數組,你可以參考你剛纔的問題Django Query distinct values works but i cant use the query result

5
names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct() 

會給你不同的全名,你可以做類似的事情來獲得不同的工作類別。

這些會給你值的列表,而不是對象本身,但如果我正確地解釋你的問題,那麼我認爲這些會給你你想要的。

相關問題