美文网首页
MySQL常用查询模型

MySQL常用查询模型

作者: MonsFinn | 来源:发表于2020-05-05 16:08 被阅读0次

根据以往的MySQL使用经验总结了一些常用模型。

一、 “最”值问题

  1. 全局最值:使用聚合函数如max、min
  2. 组中最值:在1的基础上搭配group by
  3. 组间最值:
    • 法一:在2的基础上搭配having,使用some/any/all实现组的比较
    • 法二: 在2的基础上使用子查询

where 的筛选粒度为每一条记录,过滤行;having的筛选粒度为每一组,过滤组

二、排序问题

  1. 全局排序:
    • 法一:order by a, b
    • 法二:使用开窗函数,rank() over(partition by … order by …)
    • 法三:自联结生成笛卡尔积,通过where实现字段值筛选,借助group by、count获得排名列
  2. 组内排序(不聚合):group by搭配开窗函数,同上
  3. 前n问题:
    • 法一:在开窗函数基础上比较rank
    • 法二:在 笛卡尔积基础上比较having count(col) <=n

三、连续问题

  1. 连续n次问题:n表错位联结,行满足 id,id+1,id+2…同时满足该行对应的n个表的值相等(where)
  2. 连续n次>值:在1基础上选取
  3. 连续n次>值>关系:在1基础上使用where

四、重复问题

  1. 去除全局重复值:select distinct x
  2. 去除组内重复值:count distinct y

五、比较问题

  1. 组比较:having搭配搭配聚合函数
  2. 行比较:联结后使用where
  3. 行与组的比较:
    • 法一:聚合后与表联结,然后使用where,可用
    • 法二:聚合后放入where子查询中
    • 法三:直接使用开窗函数,然后进行同行比较,开窗函数需要建立新列

六、分组问题

  1. 查询多种聚合值:直接通过普通聚合函数实现
  2. 需要查询多种聚合值,同时每种聚合值还需要组内筛选:在查询的聚合函数中添加条件(嵌套子查询或case when
  3. 查询一种聚合值:直接使用聚合函数或在此基础上用having过滤组

相关文章

  • MySQL常用查询模型

    根据以往的MySQL使用经验总结了一些常用模型。 一、 “最”值问题 全局最值:使用聚合函数如max、min 组中...

  • Django模型(二)

    知识点: 常用的查询 Field的常用参数 常用的模型字段类型 常用的查询 Field的常用参数 primary_...

  • Elastic检索技巧总结

    常用的检索类型 在mysql中,我们常用的查询 可能就是 精准查询 模糊查询 范围查询 等等,那么在es中,有哪...

  • mysql调优及常用命令

    mysql常用命令 慢查询日志 mysqlddumpslow(查看慢查询日志) mysql5.7(虚拟列) mys...

  • MySQL查询模型

    (未完)

  • MySQL 查询模型

    缘起 从"燕十八"接触到 "MySQL 查询模型",对 SQL 语句的理解有醍醐灌顶之感.赠人玫瑰, 手有余香, ...

  • MySQL之binlog日志、undo日志、redo日志

    一、MySQL常用的几种日志 MySQL主要包含以下几种日志: 错误日志 查询日志 慢查询日志 事务日志 [und...

  • mysql自我小结

    MySql索引 存储引擎 查询mysql支持的引擎:show engines 常用引擎: MyISAM,InnoD...

  • MySQL常用查询

    其实在工作中用SQL挺多的,不过一般都是单表查询,平时出报表会使用到JOIN函数,记录一些常用的函数。 Excep...

  • MySql常用查询

    要查询数据库 "mammothcode" 下所有表名以及表注释 要查询表字段的注释 一次性查询数据库 "mammo...

网友评论

      本文标题:MySQL常用查询模型

      本文链接:https://www.haomeiwen.com/subject/rapmghtx.html