以下两个MySQL语句有什么区别?(MySQL文档中某个列的组最大值)

  • 本文关键字:MySQL 文档 最大值 两个 语句 区别 mysql sql
  • 更新时间 :
  • 英文 :


以下两个MySQL语句有什么区别?

select article, dealer, price from shop s1 where price=(select max(**s2.price**) from shop s2
where s1.article = s2.article)
order by article;
select article, dealer, price from shop s1 where price=(select max(**s1.price**) from shop s2
where s1.article = s2.article)
order by article;

这两者的查询结果不同,我只是无法理解这两者的不同之处。请帮助我理解它,非常感谢。

第二个是相关的子查询,但返回的值与外部查询中的s1.price相同。 由于用于内部查询和外部查询的表相同,因此它在功能上等效于:

where price is not null and article is not null

也就是说,任何具有有效价格的有效文章都将与子查询的结果匹配。

第一个是相关的子查询,它获取每篇文章的最高价格,然后返回外行。 使用正确的索引,这通常是编写此类查询的最有效方法。

最新更新