2014-10-17 4 views
1

Как бы сделать следующий запрос в Джанго:Джанго выбрать отчетливый в MySQL

Asset.objects.all().distinct('checksum') # get all distinct checksum items 

Эквивалент в SQL будет:

SELECT * FROM asset GROUP BY checksum 

Обратите внимание, что мне нужно все поля здесь, так Я не могу сделать что-то вроде Asset.objects.values_list('checksum').distinct(). Как мне это сделать?

+0

Не уверен, что именно вы просите здесь. Можете ли вы предоставить примерный набор данных и ваш желаемый результат? – Joseph

ответ

1

Вы хотите получить первый товар от всех checksum?

items = Asset.objects.all() 
items.query.group_by = ['checksum'] 
print items 
[<Asset: ...] 
+0

Это, похоже, не работало для меня. Он не вызвал ошибку, но не сделал GROUP BY по результатам - т. Е. У меня есть более одного элемента с той же контрольной суммой. – David542

+0

Не могли бы вы объяснить, что именно вы хотите получить? Код работает, я только что протестировал его. Он возвращает один элемент каждой контрольной суммы - тоже делает то же самое. Взгляните на этот [ответ] (http://stackoverflow.com/questions/581521/whats-faster-select-distinct-or-group-by-in-mysql): в большинстве случаев они являются синонимами. – byashimov

Смежные вопросы