django queryset-mysql:如何在两列中获得不同的项
我有一张桌子 型号名称:Test 我想得到col1和col2的唯一组合的所有行,以及最近id的行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字段您
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')