目录
一:目的
1、想知道::常见查询示例
二、参考
1、MySQL 8 的学习——7常见查询示例
https://blog.csdn.net/zjy_android_blog/article/details/81741916
①总结:good:很好,我操作就是按照作者的来进行练习的,
三、操作
1、创建一个可供测试的表
CREATE TABLE shop(article int(4) unsigned zerofill default '0000' not null,
-> dealer char(20) default '0000' not null,
-> dealer char(20) default '0000' not null,\c
CREATE TABLE shop(article int(4) unsigned zerofill default '0000' not null,
-> dealer CHAR(20) DEFAULT '' NOT NULL,
-> price DOUBLE(16,2) DEFAULT '0.00'NOT NULL,
-> PRIMARY KEY(article,dealer));
INSERT INTO shop VALUES
-> (1,'A',3.45),(1,'B',3.99),(2,'A',10.99),(3,'B',1.45),
-> (3,'C',1.69),(3,'D',1.25),(4,'D',19.95);
2、查询一下 shop 表
SELECT *FROM shop;
3、列的最大值:查询最高的 article 编号
SELECT MAX(article) AS article FROM shop;
4、查询某列最大值的行
①方法一:
任务:查找最昂贵文章的编号,经销商和价格。
这可以通过子查询轻松完成:
##任务:查找最昂贵文章的编号,经销商和价格。
##这可以通过子查询轻松完成:
SELECT article ,dealer,price FROM shop WHERE price=(SELECT MAX(price) FROM shop);
②方法二:
查询某列最大值的行:其他解决方案是使用a LEFT JOIN
或者按价格降序排序所有行,并使用特定于MySQL的LIMIT
子句获取第一行:
SELECT s1.article ,s1.dealer,s1.price FROM shop s1 LEFT JOIN shop s2 ON s1.price<s2.price WHERE s2.article IS NULL;
③方法三:使用特定于MySQL的LIMIT
子句获取第一行
SELECT article,dealer,price FROM shop ORDER BY price DESC LIMIT 1;
5、每组最大列数:找到每篇文章的最高价格。
SELECT article,MAX(price) AS price FROM shop GROUP BY article;
6、保持某一列的分组最大值的行
任务:对于每篇文章,找到价格最贵的经销商或经销商。
这个问题可以通过像这样的子查询来解决:
##对于每篇文章,找到价格最贵的经销商或经销商。
##这个问题可以通过像这样的子查询来解决:
SELECT article,dealer,price FROM shop s1 WHERE price=(SELECT MAX(s2.price)FROM shop s2 WHERE s1.article=s2.article);