码迷,mamicode.com
首页 > 数据库 > 详细

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

时间:2020-12-14 13:10:25      阅读:3      评论:0      收藏:0      [点我收藏+]

标签:null   info   inf   窗口函数   相关子查询   相关   定义   个数   工作原理   

接下来将会介绍使用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 常见查询示例(1)

标签:null   info   inf   窗口函数   相关子查询   相关   定义   个数   工作原理   

原文地址:https://blog.51cto.com/15023289/2561181

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!