mysql 举例_MySQL 语句举例(一)

举例:有10个用户,输出在订单表中下单数最多的5个人的名字。

my_user 表数据

32e8783ee11fc4632700703c311e26ab.png

my_order,uid对应my_user表的id

c4ba7e344eb1c859d511d696e7a377d3.png

测试数据生成

写一个存储过程,随机插入10000条数据:

CREATE DEFINER=root@localhost PROCEDURE test_loop( )

BEGIN

DECLARE

i INT DEFAULT 1;

WHILE

i < 10000 DO

INSERT INTO my_order ( oid, uid )

VALUES

(

CONCAT( 'o_', DATE_FORMAT( now( ), '%Y%m%d%h%i%s' ), FLOOR(1000 + RAND( )*(9999-1000) )),

FLOOR( 1 + RAND( ) * 10 )

);

SET i = i + 1;

END WHILE;

END

查询语句:

SELECT

count( o.uid ) count_num,

u.NAME

FROM

my_user u

JOIN my_order o ON u.id = o.uid

GROUP BY

o.uid

HAVING

COUNT( o.uid )

ORDER BY

COUNT( o.uid ) DESC

LIMIT 5;

查询结果:

b81f4122122c357a31b2c46515ba835d.png

统计所有的用户订单数,结果如下:

f29acd616767c8b961095f349ef90597.png

SELECT

count( o.uid ) count_num,

u.NAME

FROM

my_user u

JOIN my_order o ON u.id = o.uid

GROUP BY

o.uid

HAVING

COUNT( o.uid )

ORDER BY

COUNT( o.uid ) DESC

该sql 主要考察 group by 和 having 的使用,然后 order by 和 desc 排序。

★sql 的执行顺序如下:

1、FORM: 对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1。

2、ON: 对虚表VT1进行ON过滤,只有那些符合的行才会被记录在虚表VT2中。

3、JOIN: 如果指定了OUTER JOIN(比如left join、 right join),那么保留表中未匹配的行就会作为外部行添加到虚拟表VT2中,产生虚拟表VT3。

4、WHERE: 对虚拟表VT3进行WHERE条件过滤。只有符合的记录才会被插入到虚拟表VT4中。

5、GROUP BY: 根据group by子句中的列,对VT4中的记录进行分组操作,产生VT5。

6、HAVING: 对虚拟表VT5应用having过滤,只有符合的记录才会被 插入到虚拟表VT6中。

7、SELECT: 执行select操作,选择指定的列,插入到虚拟表VT7中。

8、DISTINCT: 对VT7中的记录进行去重。产生虚拟表VT8.

9、ORDER BY: 将虚拟表VT8中的记录按照进行排序操作,产生虚拟表VT9.

10、LIMIT:取出指定行的记录,产生虚拟表VT10, 并将结果返回。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468281.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你知道Linux里D进程会搞事吗?

前言这篇文章是一位大神在实际项目中遇到问题并分析总结出来的&#xff0c;作为新手&#xff0c;能接触到这类文章应该是受益匪浅&#xff0c;这位同学现在在魅族工作&#xff0c;以后也会一直在魅族工作&#xff0c;是Linux 方面的专家&#xff0c;「魅族还有另一个Linux 大神…

react-router 页面离开 提示数据变更

以前项目使用 react-router2.0&#xff0c; 业务层面页面离开的时候需要弹出自己的弹出框&#xff0c;根据用户的操作&#xff0c;进行是否可以离开 试了几种方式都存在问题&#xff0c;实现的并不完美&#xff0c;没办法对用户点击浏览器后退支持的很好&#xff0c;除非是显示…

C语言系列文章之#和##

很久就知道了 # 和 ## &#xff0c;但是都没怎么使用&#xff0c;直到最近的项目涉及到需要编写大量相似的代码之后才决定尝试使用 ## 去简化代码的书写。比如说我的项目需要控制四个通道的电机&#xff0c;四个通道的逻辑控制代码都是类似的&#xff0c;只是对应的硬件和数据信…

springboot 上传文件_基于SpringBoot的文件上传

在实际的企业开发中&#xff0c;文件上传是最常见的功能之一&#xff0c;SpringBoot集成了SpringMVC常用的功能&#xff0c;当然也包含了文件上传的功能&#xff0c;实现起来没有太多的区别。下面我们来讲解一下&#xff0c;使用SpringBoot如何实现多个文件上传操作。使用的环境…

Linux的 i2c 驱动框架分析

1.基本概念总线设备驱动模型&#xff0c;是Linux 内核的一个基础&#xff0c;基本理论可以说按照大企业的分工原则&#xff0c;每个人只要负责自己的事情&#xff0c;向其他部门给出标准的接口调用&#xff0c;后勤部就负责后勤工作&#xff0c;厨房有可能跟后勤部产生工作上的…

matlab fftshift_数字信号处理没有Matlab?用Python一样很爽

通常&#xff0c;在数字信号处理时&#xff0c;我们避不开matlab这个工具&#xff0c;因其它的强大的功能受到广大工程师的好评&#xff0c;也一直都是业界的不二之选。但是&#xff0c;matlab毕竟是商业软件&#xff0c;公司里如果使用的话&#xff0c;就需要支付高昂的费用。…

栈,C语言实现

什么是数据结构&#xff1f;数据结构是什么&#xff1f;要了解数据结构&#xff0c;我们要先明白数据和结构&#xff0c;数据就是一些int char 这样的变量&#xff0c;这些就是数据&#xff0c;如果你是一个篮球爱好者&#xff0c;那么你的球鞋就是你的数据&#xff0c;结构就是…

Camera摄像头工作原理

回想这工作的这几年&#xff0c;尝尽社会的辛酸艰难&#xff0c;从一开始什么都没有到30万&#xff0c;从30万到200万&#xff0c;从200万到1300万&#xff0c;不是炫耀&#xff0c;我只是想通过我自己的经历告诉我的朋友们「手机像素越高&#xff0c;拍的照片越清晰」摄像头结…

es6一维数组转二维数组_技术图文:Numpy 一维数组 VS. Pandas Series

背景Numpy 提供的最重要的数据结构是 ndarray&#xff0c;它是 Python 中 list 的扩展。Pandas 提供了两种非常重要的数据结构 Series和DataFrame。Numpy 中的一维数组与 Series 相似&#xff0c;一维数组只是提供了从0开始与位置有关的索引&#xff0c;而Series除了位置索引之…

unity UI事件

由于工作需要到持续按键&#xff0c;所以了解了一下unity UI事件&#xff0c;本文主要转载于http://www.cnblogs.com/zou90512/p/3995932.html?utm_sourcetuicool&utm_mediumreferral&#xff0c;并对相关问题进行解释。 我们最常用到的就是unity的button组件&#xff0c;…

电子工程学院的师兄弟姐们们,老师叫你们回家

昨天写了很长的文章&#xff0c;接收到推送的同学们应该也会很开心&#xff0c;但是由于我的原因&#xff0c;需要把文章删除「你们能想到的原因肯定不是我删文的原因」&#xff0c;但是呢&#xff0c;也因为这样&#xff0c;又可以重写一篇&#xff0c;刚好可以多加点内容。后…

auto.js停止所有线程_Java多线程编程基础知识 概念介绍,以及线程状态

一、进程进程是操作系统结构的基础&#xff1b;是一次程序的执行&#xff1b;是一个程序及其数据在处理机上顺序执行时所发生的活动。操作系统中&#xff0c;几乎所有运行中的任务对应一条进程(Process)。一个程序进入内存运行&#xff0c;即变成一个进程。进程是处于运行过程中…

Linux 进程管理数据结构

文末集赞留言抽奖&#xff0c;我会选出留言点赞数前 3 名送出小米耳机。别刷赞啊&#xff0c;刷赞被举报无效&#xff0c;相信真的是公众号粉丝的读者&#xff0c;不会做这样的行为&#xff0c;刷赞指的是购买外挂刷&#xff0c;如果是转发到朋友圈和微信群的&#xff0c;不算刷…

如何安装python3.8_python3.8下载及安装步骤详解

1.操作系统&#xff1a;Windows7 64bit executable installer 2.安装步骤&#xff1a; 双击安装文件python-3.8.0-amd64.exe 勾选下方“Add Python 3.8 to PATH”&#xff0c;并选择“Customize installation”3.把Optional Features全部勾选上&#xff0c;点击“Next"4.A…

队列,C语言实现

什么是队列&#xff1f;上一篇文章写了什么是栈&#xff0c;用C语言实现了栈&#xff0c;既然说了栈&#xff0c;不说队列&#xff0c;感觉总是少了点什么&#xff0c;所以就顺手写一个队列&#xff0c;而且最近做项目也用到这个队列的代码。栈的特点是先进后出&#xff0c;队列…

华为hr,我尽力了

最近&#xff0c;一则新闻很火但是突然&#xff0c;又不火了&#xff0c;火于不火之间&#xff0c;时间有点短&#xff0c;其中猜测很大部分是gongguan原因以下为正文截图~以上为事件原文&#xff0c;这个是一个热点新闻&#xff0c;之前发了一个热点新闻&#xff0c;瞬间就火爆…

idea,eclipse创建多模块项目

新建一个maven项目 iead,新建是不选择archetype,新建好之后,pom中的 <packaging>pom</packaging>节点是默认的,如果不是要改成这这样子 然后选中这个项目,新建一个module,之后就和建立普通项目一样了. eclipse 是这样的 建一个普通的maven项目就可以了 这个是建好之…

python画图程序代码_少儿python编程(7)海龟画图(拓展1)

我们继续用Python的海龟库来画图吧&#xff01;上图是画一朵花的程序&#xff0c;重点是6-12行&#xff0c;使用了函数来定义drawleaf:每一掰叶子由两条弧线组成&#xff0c;每一条弧线重复画15次&#xff0c;每次前进5步&#xff0c;右转6度。看图形化代码就很清楚了&#xff…

opencv matlab三维点云,点云采样的三种方法 - 小白学视觉的个人空间 - OSCHINA - 中文开源技术交流社区...

点击上方“小白学视觉”&#xff0c;选择“星标”公众号重磅干货&#xff0c;第一时间送达编辑&#xff1a;3D视觉工坊本文由知乎作者GeometryHub授权转载&#xff0c;不得擅自二次转载。原文链接&#xff1a;https://zhuanlan.zhihu.com/p/86044055点云采样分类点云采样的方法…

C语言数组越界导致无限循环

大奖也是你们的&#xff0c;感谢支持&#xff0c;不喜欢的请轻拍。过年抽奖我还是很期待的&#xff0c;每年公司的年会抽奖的时候&#xff0c;我总是能小中一把&#xff0c;有一年我还中了个一等奖&#xff0c;不知道大家对一等奖什么概念&#xff0c;中一等奖的概率非常低&…