MySQL 基础教程-09 常见查询示例

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL 基础教程-09 常见查询示例相关的知识,希望对你有一定的参考价值。

接下来将会介绍使用mysql解决一些常见问题。

一些例子使用 shop 表存储交易商相关商品(商品编号)的价格。假设每个交易商每件商品都有一个固定的价格,那么商品和交易商就是记录的主键。

启动命令行工具mysql并选择一个数据库:

技术图片

使用以下语句创建并填充示例表:
技术图片

执行以上的语句后,该表应包含以下内容:

技术图片

1.查询列最大值
最大商品编号是多少:
技术图片

2.查询存储某列最大值的行

任务:找出最贵商品的编号、经销商和价格
这使用子查询很容易做到:

技术图片

还可以使用LEFT JOIN 或者对价格降序排列,并使用MySQL特有的LIMIT子句来获取第一条记录,这2种方法能达到和上面同样的效果:
技术图片

注意:如果有好几个最贵的商品,价格都是19.95,LIMIT从句将只显示其中一条。

3.每个分组中的列最大值

任务:找出每种商品的最高价格。

技术图片
4.包含某列的组最大值的行

任务:找到每种商品价格最贵的经销商。
这个问题可以用下面的子查询来解决:

技术图片

上面的例子使用了一个相关子查询,这样的查询可能是低效的。还可以使用以下几种方式来解决这个问题。
不相关子查询:

技术图片

LEFT JOIN:

技术图片

LEFT JOIN 的工作原理是,当s1.price处于其最大值时,没有值更大的s2.price,因此相应的s2.article值为 NULL。

带窗口函数的通用表表达式(CTE):

技术图片

5.使用用户定义的变量

您可以使用MySQL用户变量来存储结果,而不必将结果存储在客户端的临时变量中。

例如,要查找价格最高和最低的商品,可以执行以下操作:

技术图片

注意:
也可以将数据库对象(如表或列)的名称存储在用户变量中,然后在SQL语句中使用此变量;但是,这需要使用预编译语句。

以上是关于MySQL 基础教程-09 常见查询示例的主要内容,如果未能解决你的问题,请参考以下文章

MySQL基础教程DDL语句详细介绍

MySQL 基础教程-07 空值处理与多表查询

MySql基础教程——查询训练

MySQL基础教程---常见函数介绍

MySQL基础教程---创建查询备份数据库

SpringBoot示例教程MySQL与Mybatis基础用法