用于获取多个值的Django MySQL distinct查询

2024-04-25 15:04:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个MySQL数据库,不幸地与Django 1.4.1一起使用。 Distinct函数只有在我正确理解的情况下才适用于POSTGRESQL。

我必须使一个不同的查询包含多个值,而只有一个不同的值

喜欢; 这个是为POSTGRE工作的,但不是MYSQL, 我得到以下错误

DISTINCT ON fields is not supported by this database backend

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')

但我没有得到明确的价值观,因为我也得到了员工的工作类别。但当我不控制它的时候,我就不能把它作为数组。

知道吗?


Tags: django函数name数据库byobjectsmysqlorder
2条回答
names = Staff.objects.order_by('person__full_name').values('person__full_name').distinct()

将为您提供不同的全名,并且您可以执行类似的操作来获得不同的工作类别。

这些将给你价值观的列表,而不是对象本身,但是如果我正确地解释了你的问题,那么我认为这些将给你想要的东西。

.distinct([*fields])仅在PostgresSQL中有效。

来自distinct文档

这就是区别。对于普通的distinct()调用,当确定哪些行是不同的时,数据库会比较每行中的每个字段。对于具有指定字段名的distinct()调用,数据库将只比较指定的字段名。

如前所述,检查记录中的所有字段。大多数情况下,您可能会得到具有不同字段值的记录(更可能是在查询多个表的manytomy或ForeignKey关系时)。

要合并为数组,可以参考前面的问题Django Query distinct values works but i cant use the query result

相关问题 更多 >