暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

数据库杂货铺 2021-04-12
747

接下来将会介绍使用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语句中使用此变量;但是,这需要使用预编译语句。

文章转载自数据库杂货铺,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论