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;除非是显示…

java interface和impl_为什么要使用Interface,而不是直接使用一个实体类来完成任务?Interface和Impl这种方式的好处是什么?...

大家好&#xff0c;我是IT修真院北京分院的学员刘佳义&#xff0c;一枚正直善良的JAVA程序员。今天给大家分享一下&#xff0c;修真院官网任务中可能会使用到的知识点&#xff1a;为什么要使用Interface&#xff1f;Interface和Impl有什么好处1.背景介绍&#xff1a;首先咱们来…

python批量访问网页保存结果_Python检测批量URL状态,并将返回正常的URL保存文件...

-- coding: UTF-8 -- #author huangyishan import os import sys import urllib2 urls sys.argv[1] #从程序外部调用参数&#xff0c;0即程序本身 result list() def check_url_status(): f open(urls,‘r‘) #以读方式打开文件 for line in f.readlines(): #依次读取每行 …

caffe使用ctrl-c不能保存模型

caffe使用Ctrl-c 不能保存模型&#xff1a; 是因为使用的是 tee输出日志   解决方法&#xff1a;kill -s SIGINT <proc_id>   或者使用   GLOG_log_dir/path/to/log/dir $CAFFE_ROOT/bin/caffee.bin train     —solver/path/to/solver.prototxt  来输出日志…

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

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

java ioc和aop的含义_Spring核心IoC和AOP的理解

spring 框架的优点是一个轻量级笔记简单易学的框架&#xff0c;实际使用中的有点优点有哪些呢&#xff01;1.降低了组件之间的耦合性 &#xff0c;实现了软件各层之间的解耦2.可以使用容易提供的众多服务&#xff0c;如事务管理&#xff0c;消息服务等3.容器提供单例模式支持4.…

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

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

看雪KSSD-windows驱动

KanXue Software Security Documentation ,简称KSSD ,是一个在线的文档浏览查阅系统 1. 书籍推荐 《windows 2000 内部揭密>>--------------------------------------这里面可以学到什么是IRP、内存管理、文件系统之类 《驱动模型设计>>-------------------------…

Linux的 i2c 驱动框架分析

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

java ee程序设计师_软件设计师:Java EE开发四大常用框架[1]

StrutsStruts是一个基于Sun Java EE平台的MVC框架&#xff0c;主要是采用Servlet和JSP技术来实现的。Struts框架可分为以下四个主要部分&#xff0c;其中三个就和MVC模式紧密相关&#xff1a;1、模型 (Model)&#xff0c;本质上来说在Struts中Model是一个Action类(这个会在后面…

26、字符串的操作

字符串的操作 一、字符串的反向输出&#xff08;逆置&#xff09; /*2017年3月17日13:18:39功能&#xff1a;将字符串反向输出 */ #include"stdio.h" int main () {char a[100];char b[100];printf("please input one array: ");gets(a);char *pa a;char …

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;…

java sar包_linux下查看最占性能的JAVA进程

记录一下自己常用的linux系统命令&#xff0c;方便以后查阅&#xff0c;发觉记忆越来越不行了找到最耗CPU的线程ps命令命令&#xff1a;ps -mp pid -oTHREAD,tid,time或者ps -Lfp pid结果展示&#xff1a;这个命令的作用&#xff0c;主要是可以获取到对应一个进程下的线程的一些…

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

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

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

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