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

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

时间: 2024-09-20 07:28:35

MySQL 查找价格最高的图书经销商的几种SQL语句_Mysql的相关文章

mysql每半小时平均值计算的sql语句_Mysql

表结构: CREATE TABLE `instance` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `timestamp` int(10) unsigned DEFAULT NULL, `cpu` decimal(8,3) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB; 统计每半小时平均值,实现可以如下: select `timestamp`-`timestamp`% (5*60) , a

mysql替换表中的字符串的sql语句_Mysql

核心语句: UPDATE `cdb_pms` SET `subject` = REPLACE(`subject`, 'Welcome to', '欢迎光临') mysql替换字段里数据内容部分字符串 mysql替换表的字段里面内容,如例子: mysql> select host,user from user  where user='testuser'; +-----------------------+----------+ | host                  | user    

mysql查询今天、昨天、近7天、近30天、本月、上一月的SQL语句_Mysql

mysql查询今天,昨天,近7天,近30天,本月,上一月数据的方法分析总结: 话说有一文章表article,存储文章的添加文章的时间是add_time字段,该字段为int(5)类型的,现需要查询今天添加的文章总数并且按照时间从大到小排序,则查询语句如下: 复制代码 代码如下: select * from `article` where date_format(from_UNIXTIME(`add_time`),'%Y-%m-%d') = date_format(now(),'%Y-%m-%d')

允许远程用户访问mysql服务sql语句_Mysql

mysql> grant all privileges on cakephp.* to cakephp@192.168.14.1 identified by 'lpfukia'; Query OK, 0 rows affected (0.01 sec) mysql> mysql> mysql> mysql> flush privileges; $1 >> 第一条命令: 授权192.168.14.1 主机的cakephp用户访问cakephp数据库 $2 >&

mysql通过查看跟踪日志跟踪执行的sql语句_Mysql

在SQL SERVER下跟踪sql采用事件探查器,而在mysql下如何跟踪sql呢? 其实方法很简单,开启mysql的日志log功能,通过查看跟踪日志即可. 开启mysql的日志log方法: windows环境下的配置方法: 我使用的版本:Version: 5.0.37-community-nt-log (MySQL Community Edition (GPL)) 找到my.ini,我的是在"G:\Program Files (x86)\MySQL\MySQL Server 5.0"

mysql命令行还原phpMyAdmin导出的含有中文的SQL文件_Mysql

最近得到了一个数十M的MySQL脚本文件,准备还原为数据库. 以前就使用MySQL-Front短暂使用过MySQL,先用它试试,结果挂掉. 这样吧,先用MySQL-Front创建了空数据库,然后使用mysql命令行导入吧. 1)使用MySQL-Front创建了空数据库 因为看脚本中对象都有DEFAULT CHARSET=gbk COMMENT=- 指令,所以字符集选择gbk   2)启动MySQL命令行,输入密码   3)使用新建的数据库b 输入命令: use b;   4)更改文件读取字符集为

mysql实现文章上一篇下一篇的sql语句

实现网站文章里面上一篇和下一篇的sql语句的写法. 当前文章的id为 $article_id,当前文章对应分类的id是$cat_id,那么上一篇就应该是:  代码如下 复制代码 SELECT max(article_id) FROM article WHERE article_id < $article_id AND cat_id=$cat_id; 执行这段sql语句后得到 $max_id,然后 SELECT article_id, title FROM article WHERE articl

MySQL 创建主键,外键和复合主键的语句_Mysql

1.创建主键语法 ALTER TABLE table_name ADD CONSTRAINT pk_name PRIMARY KEY(列名); 2.创建外键语法 ALTER TABLE news_info[子表名] ADD CONSTRAINT FK_news_info_news_type[约束名] FOREIGN KEY (info_id)[子表列] REFERENCES news_type[主表名] (id)[主表列] ; 3.使用组合主键 如果一列不能唯一区分一个表里的记录时,可以考虑多个

MySql获取某个字段存在于哪个表的sql语句_Mysql

复制代码 代码如下: SELECT TABLE_SCHEMA,TABLE_NAME FROM information_schema.`COLUMNS` WHERE COLUMN_NAME = 'col1' col1为子段名.