用于获取多个值的Django的MySQL不同查询(Django MySQL distinct que

2019-06-28 07:36发布

我有不幸的是使用Django 1.4.1使用的MySQL数据库 独特的功能只工作了PostgreSQL的,如果我得到它的权利。

我必须做出不同的查询由多个值,同时只有一个不同,

喜欢; 这一个适用于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')

但我,因为我也得到了工作人员的工作类别没有得到不同的值。 但是,当我不包含它,我无法得到它的阵列。

任何的想法 ?

Answer 1:

.distinct([*fields])只能在PostgreSQL中。

从不同的文档

这里的区别。 对于一个正常的不同()调用,该数据库的每个字段在每一行中,确定哪些行是不同的时相比较。 对于指定的字段名称不同()调用,数据库将只比较指定的字段名。

如前所述记录中的所有字段进行检查。 最有可能你的情况(如果你是查询多个表多对多或ForeignKey的关系,更可能的情况下),你正在用不同的字段值的记录。

为了巩固作为数组,你可以参考你刚才的问题, Django的查询不同的价值观的作品,但我不能使用查询结果



Answer 2:

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

会给你不同的全名,你可以做类似的事情来获得不同的工作类别。

这些会给你值的列表,而不是对象本身,但如果我理解你的问题正确,则我认为这些会给你想要的东西。



文章来源: Django MySQL distinct query for getting multiple values