Mysql 这段SQL代码如何选择最便宜的两种水果?
我有我从中得到的SQL代码。我无法理解它是如何工作的Mysql 这段SQL代码如何选择最便宜的两种水果?,mysql,sql,Mysql,Sql,我有我从中得到的SQL代码。我无法理解它是如何工作的 SELECT type, variety, price FROM fruits WHERE ( SELECT COUNT(*) FROM fruits AS f WHERE f.type = fruits.type AND f.price <= fruits.price ) <= 2 该表可以在上面提到的链接中找到,也可以单击,代码也可以在该链接中找到。首先,它不存在。要获得最昂贵的
SELECT type, variety, price
FROM fruits
WHERE ( SELECT COUNT(*)
FROM fruits AS f
WHERE f.type = fruits.type AND f.price <= fruits.price
) <= 2
该表可以在上面提到的链接中找到,也可以单击,代码也可以在该链接中找到。首先,它不存在。要获得最昂贵的,子查询需要f.price>=fruits.price。这是最便宜的。但让我假设你的意图 它实现的逻辑非常复杂。但以下是一些场景: 如果给定类型的两种最昂贵的水果具有独特的价格,那么它会满足您的需求。 如果正好有两种水果价格最高,那么它们就会被退回。 如果3个或3个以上的水果对给定类型来说是最昂贵的,那么它将不返回任何结果。 有更好的方法来表达这种逻辑,根据实际意图,使用密集的秩或行数 查询是如何工作的?子查询是一个相关子查询。考虑它的方式是,对于外部查询中的每一行,都运行内部查询。内部查询是根据价格条件计算相同类型的水果的数量——价格相同或更高的数量。请注意,SQL引擎可能使用不同的执行计划 假设如果子查询返回1,则该行是最高价格。然而,这一假设取决于基础数据
正如我所说,这真是一个可怕的方式来完成这一逻辑。学习窗口功能。并使用不同的示例来了解相关子查询。a效率不高,b只选择两个或两个以下水果的水果,包括它们自己的价格拼写相同或更低?是的,我误解了,我会立即更正问题!