当前位置: 首页 > 图文教程 > 数据库 > MYSQL > MySQL 查找价格最高的图书经销商的几种SQL语句

MYSQL
实际应用:MySQL5存储过程编写
解决MySQL server has gone away
如何关闭MySQL数据库中错误提示音
解决MySQL中忽略用户的现象
带你轻松接触MySQL数据库的异常处理
MySQL字符集:保证不发生乱码的方法
如何对MySQL 服务器进行调优
MySQL忘记超级用户口令的解决办法
一个检测MySQL状态的脚本
公共MySQL的数据库服务器层
Linux下MySQL数据库开发技术
Mysql基础教程:新手上路操作必看
Mysql教程 对MySQL中的锁机制的总结
巧实例:如何在.NET中访问MySQL数据库
PHP和MYSQL数据库合理且有效的结合在一起
MySQL数据库中修改密码访问限制设置详解
解析PHP连接MYSQL的两种方法
mysql 8小时空闲后连接超时的问题
如何加大MYSQL中的最大连接数
SQL实现动态交叉表

MYSQL 中的 MySQL 查找价格最高的图书经销商的几种SQL语句


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-13   浏览: 90 ::
收藏到网摘: n/a

不同的图书,在不同的经销商的价格不同,我们这里要找到每种图书最高的经销商是谁? 找最低的类似了。 mysql> use test;
Database changed
mysql> 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));
Query OK, 0 rows affected (0.13 sec)
mysql> 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);
Query OK, 7 rows affected (0.03 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> select * from shop;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | A | 3.45 |
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | B | 1.45 |
| 0003 | C | 1.69 |
| 0003 | D | 1.25 |
| 0004 | D | 19.95 |
+---------+--------+-------+
7 rows in set (0.06 sec)
mysql> select article,max(price) from shop group by article
-> ;
+---------+------------+
| article | max(price) |
+---------+------------+
| 0001 | 3.99 |
| 0002 | 10.99 |
| 0003 | 1.69 |
| 0004 | 19.95 |
+---------+------------+
4 rows in set (0.05 sec)
mysql> select article,max(price),dealer from shop group by article;
+---------+------------+--------+
| article | max(price) | dealer |
+---------+------------+--------+
| 0001 | 3.99 | A |
| 0002 | 10.99 | A |
| 0003 | 1.69 | B |
| 0004 | 19.95 | D |
+---------+------------+--------+
4 rows in set (0.00 sec)
mysql> select article,dealer,price from shop s1
-> where price=(select max(s2.price) from shop s2
-> where s1.article=s2.article);
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | C | 1.69 |
| 0004 | D | 19.95 |
+---------+--------+-------+
4 rows in set (0.01 sec)
mysql> select s1.article,dealer,s1.price
-> from shop s1
-> join(
-> select article,max(price) as price from shop
-> group by article) as s2
-> on s1.article = s2.article and s1.price = s2.price;
+---------+--------+-------+
| article | dealer | price |
+---------+--------+-------+
| 0001 | B | 3.99 |
| 0002 | A | 10.99 |
| 0003 | C | 1.69 |
| 0004 | D | 19.95 |
+---------+--------+-------+
4 rows in set (0.05 sec)
mysql> select s1.article,s1.dealer,s1.price from shop s1
-> left join shop s2 on s1.article=s2.article and s1.price select s1.article,s1.dealer,s1.price,s2.* from shop s1 left join shop s2
on s1.article=s2.article and s1.price