MySQL 8.0发行说明
MySQL 8.0源代码文档10bet官方网站
任务:对于每篇文章,以最昂贵的价格找到经销商或经销商。
这个问题可以用这样的子查询来解决:
选择文章,经销商,来自商店S1的价格,价格=(从S1.Article = S2.article的Shop S2中选择Max(S2.Price))按文章订购;+ --------- + -------- + ------- + |文章|经销商|价格|+ --------- + -------- + ------- + |0001 |B |3.99 || 0002 | A | 10.99 | | 0003 | C | 1.69 | | 0004 | D | 19.95 | +---------+--------+-------+
前面的示例使用相关的子查询,这可能是效率的(参见第13.2.11.7节“相关亚查询”)。解决问题的其他可能性是使用不相关的子查询从
条款,A左边加入
或具有窗口函数的公共表表达式。
不相关的子查询:
选择S1.Article,经销商,S1.Price从Shop S1加入(选择文章,MAX(价格)从商品的商品组的价格)在S1.Article = S2上的S2.ARTICLE和S1.PRICE = S2.PRICE = S2.PRICE ORDER by文章;
左边加入
:
选择S1.Article,S1.Dealer,S1.price从Shop S S1左连接S2 S2 ON S1.Article = S2.Article和S1.Price
这左边加入
在基础上工作S1.Price.
处于最大值,没有S2.PRICE.
具有更大的值,因此相应的S2.article.
价值是空值
。看第13.2.10.2节“加入条款”。
窗口功能的公共表表达式:
使用S1(选择文章,经销商,价格,排名()over(按Price DESC分区)作为“从商店排名”)选择文章,经销商,从S1中的价格,其中`排名= 1订单