mysql查询案例

一.查询语句

记录一下学习mysql时碰到的一个很难懂的mysql语句;


SELECT s1.article, s1.dealer, s1.price FROM shop s1 LEFT JOIN shop s2 ON s1.price < s2.price WHERE s2.article IS NULL;

二.数据源

表结构及其中的数据如下:

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);

表数据如下:

在这里插入图片描述

三.查询需求

需求:查询价格最大的整条记录!

四.查询结果

  1. 子查询
SELECT article, dealer, price FROM shop WHERE price=(SELECT MAX(price) FROM shop);

在这里插入图片描述

  1. 分页最大值查询

    SELECT article, dealer, price FROM shop ORDER BY price DESC LIMIT 1;
    

在这里插入图片描述

  1. JOIN语法查询

    SELECT s1.article, s1.dealer, s1.price FROM shop s1 LEFT JOIN shop s2 ON s1.price < s2.price WHERE s2.article IS NULL;
    

在这里插入图片描述

五.用法解释

SELECT s1.article, s1.dealer, s1.price FROM shop s1 LEFT JOIN shop s2 ON s1.price < s2.price WHERE s2.article IS NULL;

经查询该语句为join语法的使用,意思是在left join语法基础上,当s1.price的最大值,在s2.price中没有比它更大的值的时候,s2中该行的值就是null.

个人英语能力有限,只能理解这么多,详细解释如下:

The LEFT JOIN works on the basis that when s1.price is at its maximum value, there is no s2.price with a greater value and the s2 rows values will be NULL.

在这里插入图片描述

详细解释点这里!

JOIN用法详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值