解决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;")
对应查询结果正确。