django 分组统计遇见的问题
2024-10-01 14:59:10
在使用 django 的时候发现了一个坑
例如:
In [54]: print(F.objects.all().values("age").annotate(fff=Count("age")).query)
SELECT "a_f"."age", COUNT("a_f"."age") AS "fff" FROM "a_f" GROUP BY "a_f"."age"
看上去也毫无问题,可是我换一个表
In [56]: print(F.objects.all().values("attack_type").annotate(total=Count("attack_type")).query)
SELECT "b_f"."type", COUNT("b_f"."type") AS "total" FROM "b_f" GROUP BY "b_f"."id" ORDER BY "b_f"."id" DESC
神奇的事情发生了.他竟然变成了 ORDER BY "b_f"."id"
,而且还加上了ORDER BY "b_f"."id" DESC
,而且还会报错:
报错信息如下:
ProgrammingError: column "b_f.type" must appear in the GROUP BY clause or be used in an aggregate function LINE 1: SELECT "b_f"."type", COUNT("...
通过查询,找到一个答案,Django ORM Group By ID
发现加上order_by()
就可以避免这个问题.
In [58]: print( RequestLogBasic.objects.all().values("type").annotate(total=Count("type")).order_by("type").query)
SELECT "b_f"."type", COUNT("b_f"."type") AS "total" FROM "b_f" GROUP BY "b_f"."type" ORDER BY "b_f"."type" ASC
最新文章
- [Django]用户权限学习系列之User权限基本操作指令
- 谈谈rem
- mysql 5.7修改密码
- 第一个sprint心得及感想
- Ehcache(2.9.x) - API Developer Guide, Write-Through and Write-Behind Caches
- C++中rand()函数的用法
- ASI简单实现网络编程
- POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
- continue与break
- UVALive 2324	Human Gene Functions(动态规划)
- 源码(05) -- java.util.AbstractCollection<;E>;
- 安卓自定义控件(一)Canvas、Paint、Shader、Xfermode
- Asp.Net Core 轻松学-多线程之Task快速上手
- Navicat for MySQL下载安装和破解教程
- M1-Flask-Day2
- VB获取CAD属性值
- Grunt: 拼接代码,js丑化(压缩),css压缩,html压缩,观察文件,拷贝文件,删除文件,压缩文件
- JAVA 画图板实现(基本画图功能+界面UI)二、功能实现及重绘实现
- N-N
- Joinpoint继承体系-笔记
热门文章
- MDL的一些理解
- ZBrush中标准几何体与Polymesh
- 备份和恢复ZBrush文件
- CentOS 6.5下部署日志服务器 Rsyslog+LogAnalyzer+MySQL
- Vue-给对象新增属性(使用Vue.$set())
- Module build failed: Module failed because of a eslint warning
- UVA10082-WERTYU(紫书例题3.2)
- BZOJ 3510 首都 (LCT)
- SUSE Linux Enterprise 11 SP4系统安装过程 字符界面
- 20121124.Nodejs异步式I/O与事件式编程