解决Django中 distinct 只对一个字段有用,同时查出其他字段

需求:

  需要从如下表结构中取出不重复的name数据,还有对应id,

id name
1 a
2 b
3 a
4 c

 

 

 

 

 

 

我期望得到的查询结果是:

id name
1 a
2 b
4 c

 

 

 

 

 

解决:

我试着这么写:

queryset = User.objects.values("id", "name").order_by("name").distinct()

结果依然是没有去重name字段的原始数据

去掉id改为:

queryset = User.objects.values("name").order_by("name").distinct()

发现查询结果为:

name
a
b
c

 

 

 

 

 

原来distinct关键字去重查询只能查出一列数据,即name,

但是只查出name没有意义,还需要查出对应的id

所以换为执行原生SQL查询

queryset = User.objects.raw("select id,name from user group by name;")

对应查询结果正确。

posted @ 2021-04-20 14:24  秋寻草  阅读(566)  评论(0编辑  收藏  举报