需求:
需要从如下表结构中取出不重复的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;")
对应查询结果正确。
解决Django中 distinct 只对一个字段有用,同时查出其他字段
原文:https://www.cnblogs.com/gcgc/p/14680888.html