zoukankan      html  css  js  c++  java
  • mysql概要(四)order by ,limit ,group by和聚合函数的特点,子查询

    1.order by 默认按升序排列(asc/desc),多字段排序 order by 字段 排序方式,字段2 排序方式,..;

       在分组排序中,排序是对分组后的结果进行排序,而不是在组中进行排序。

    select * from stu order by score desc,name asc;//优先score ,然后name排序

    2.limit 在语句表示,截取记录的条数。一般和order by 配合使用(大数据下Limit使用

    limit[offset][N]

       offset: 偏移量   N:条数; 如limit(2,2),即从第三记录开始取两条记录。当一个参数时:limit 2,即从第一条记录开始取2条

    select * from ibmng limit 10,10

    3.关于分组和聚合函数的一个问题,(补充

    使用聚合函数,分组时其他字段的值是从库中取组第一次出现时对应数据,聚合函数的得到值和其他字段的值并不是原来本该对应的一条记录。只是组合一起      

    如:以班级进行分组,获取成绩最好的学生,

    select name ,max(score) from stu group by bianji;//错误,这样最大成绩对应的学生并不是原学生。

    如果你想在学校学生表中获取班级成绩最好的学生信息,如果想使用简单分组是不行,上面已经说明,

         方法一:先使用分组查询出班级和最大成绩的结果作为新表,再和原表进行联合查询出所对应的学生信息。(保证有多个相同成绩的存在情况)

         方法二:如果是最好成绩只有一个话的特列,倒是可以先按班级和成绩排序结果集再进行分组(利用了分组获取第一次出现的规则。类似获取商品中每类物品的最高价格的物品:

                     

    4子查询 where from exists

       where 子查询:聚合函数可以直接用,(差点以为只能在group中使用了,但是一般不能和别的字段一起使用)

    使用不同的子查询查出栏目下最新商品(只是id最大的那个为最新)

    where

    from

    exists:查询出有商品的栏目:可以理解成外查询中每条记录,代入到内查询中,如果内查询有结果,就表示外查询的当前记录满足条件。

     exists,有点类似in 

  • 相关阅读:
    Git 游离态的一次问题解决
    idea每次新建项目的默认路径
    springboot 整合 freemarker
    Linux 学习网站
    springtask 基本使用和 cron 表达式
    volatile 关键字 和 i++ 原子性
    python 自动补全
    nagios维护之常见问题
    nagios维护之添加监控
    windows下python文件与文件夹操作
  • 原文地址:https://www.cnblogs.com/straybirds/p/5130852.html
Copyright © 2011-2022 走看看