Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
django queryset-mysql:如何在两列中获得不同的项_Mysql_Django - Fatal编程技术网

django queryset-mysql:如何在两列中获得不同的项

django queryset-mysql:如何在两列中获得不同的项,mysql,django,Mysql,Django,我有一张桌子 型号名称:Test 我想得到col1和col2的唯一组合的所有行,以及最近id的行 id col1 col2 col3 col4 ..... 11 B 4 10 F 3 9 D 3 7 D 2 5 B 1 3 A 3 2 A 1 我怎么能得到这个 我试过了 Test.objects.all().order_by('-id').distinct('col1','col2') 但它表示此数据库后端不支持DISTINCT ON字段您

我有一张桌子

型号名称:Test

我想得到col1和col2的唯一组合的所有行,以及最近id的行

id col1 col2 col3 col4 .....
11  B   4
10  F   3
9   D   3
7   D   2
5   B   1
3   A   3
2   A   1
我怎么能得到这个

我试过了

Test.objects.all().order_by('-id').distinct('col1','col2')
但它表示此数据库后端不支持DISTINCT ON字段

您可以使用queryset上的annotate创建一个分组查询,如下所示:

从django.db.models导入Max,子查询 分组\u query=Test.objects.values'col1','col2'。注释max'id' printgrouping\u query.query打印执行的sql查询 这将返回col1-col2组合的id列的最大值

然后在测试模型上的子查询中使用它来获取其他字段col3、col4等,如下所示:

Test.objects.filterid\uuuuu in=子查询分组查询。值'id\uuuu max'
按vol1和col2分组并从idcan中选择max我可以看到该行中所有列的maxid查询集返回以下字段-col1、col2和id_u_max作为maxid,更新了应答更新的答案,如果还有其他列col3、col4等,感谢使用原始sql,这也可以使用join完成。
Test.objects.all().order_by('-id').distinct('col1','col2')