广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

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

    2018-05-16 07:53:43 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布
    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

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告