Django跟某几个字段去重MySQL

简介: Django官方文档提供了使用distinct进行去重的操作,但是只支持`PostgreSQL`,具体操作可以看官方文档,就不再过多赘述。这里写的是一种支持MySQL进行去重的操作。
+关注继续查看
  • Django官方文档提供了使用distinct进行去重的操作,但是只支持PostgreSQL,具体操作可以看官方文档,就不再过多赘述。这里写的是一种支持MySQL进行去重的操作。
  • 创建一个Book表

    from django.db import models
    
    class Book(models.Model):
        book_name = models.CharField(max_length=256, verbose_name='名称')
        category = models.CharField(max_length=256, verbose_name='类型')
        price = models.IntegerField(verbose_name="价格")
    )
  • 方案一,推荐方案,查询速度明显高于方案二。

    queryset = self.queryset.extra(where=[
            'book.id in (SELECT id FROM book WHERE category=Python GROUP BY price, book_name)'
        ])
  • 方案二,根据pricebook_name字段去重查询category为Python的数据

    queryset = Book.objects.filter(
        id__in=[i.id for i in Book.objects.raw(
            "SELECT * FROM book where category=%s GROUP BY price, book_name",
            ["Python"]
        )]
    )
  • 其实下面这一句查询条件就足够查到需要的数据,但是使用raw查出来的并不是一个QuerySet对象,想要继续在queryset的基础上继续查询,就需要再进行一次转换。

    queryset = Book.objects.raw("SELECT * FROM book where category=%s GROUP BY price, book_name", ["Python"])
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
2月前
|
关系型数据库 MySQL 索引
MySQL中去重 distinct 和 group by 是如何去重的
MySQL中去重 distinct 和 group by 是如何去重的
35 0
|
2月前
|
SQL 存储 关系型数据库
MySQL去重和设置别名
MySQL去重和设置别名
29 0
|
3月前
|
关系型数据库 MySQL 数据库
MySql刷题------查询结果去重
在编程过程中,特别是数据库查询时经常会涉及到去重的问题
|
3月前
|
数据可视化 Python
python+Django+Mysql+Echarts数据可视化实战教程(1):Django环境部署
python+Django+Mysql+Echarts数据可视化实战教程(1):Django环境部署
92 0
|
3月前
|
数据可视化 前端开发 JavaScript
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
python+Django+Mysql+Echarts数据可视化实战教程(2):Django环境下web目录的配置
95 0
|
3月前
|
SQL 关系型数据库 MySQL
Python Web实战:使用Python、Django和MySQL实现基于Web的增删改查功能
Python Web实战:使用Python、Django和MySQL实现基于Web的增删改查功能
Python Web实战:使用Python、Django和MySQL实现基于Web的增删改查功能
|
10月前
|
SQL 关系型数据库 MySQL
Mysql数据库,去重,连接篇
sql99的优点是:表的连接是独立的,不占用where的位置。使sql语句整体更加清晰😀 内连接 - 非等值连接 案例:找出每个员工的薪资等级,要求显示员工名,薪资,薪资等级
84 0
|
11月前
|
SQL Oracle 关系型数据库
MySQL练习3——查询及结果去重
MySQL练习3——查询及结果去重!
|
11月前
|
SQL IDE 关系型数据库
mysql——去重并获取最新记录
mysql——去重并获取最新记录
638 0
mysql——去重并获取最新记录
|
12月前
|
关系型数据库 MySQL 数据库
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询
MySQL数据库基础学习Day2:条件查询,排序、限制和去重操作,聚合查询,分组查询2
推荐文章
更多