如何使用 MIN/MAX/AVG 从 SQL 搜索中获取多行

How do I get more than one row from an SQL search using MIN/MAX/AVG

我有一个产品 table,其中每个产品都有一种颜色。我需要 return 每种颜色的最低产品价格。

SELECT MIN(price) FROM 'mytable' WHERE color="red"

将return所有产品的最低价格标为红色。我得到一行 returned.

我需要做的是 return 多行,每个不同颜色的最低价格。

但我不知道如何将搜索结果提供给"WHERE"并获得多行。

我试过了

SELECT MIN(price) FROM 'mytable' WHERE color=(SELECT DISTINCT color FROM 'mytable')

但是我得到一个错误。我所有的搜索都指向子查询,但我不知道如何将子查询结果提供给查询并返回多行。

这是你想要的吗?

select t.*
from mytable t
where t.price = (select min(t2.price) from mytable t2 where t2.color = 'red');

或者,等等,我想你想要每种颜色的最低价格。呃。为此使用相关子查询:

select t.*
from mytable t
where t.price = (select min(t2.price) from mytable t2 where t2.color = t.color);

如果您想要最低价,那么聚合就可以了:

select color, min(price)
from mytable t
group by color;

您的查询公式(对我)表明您还需要其他列。

您可以使用 GROUP BY 功能:

SELECT color, MIN(price) FROM 'mytable' GROUP BY color;

这将为您提供数据中每种颜色的最低价格。

SELECT color , MIN(price ) FROM 'mytable' GROUP BY color;

在 mysql 文档中阅读有关分组依据的更多信息。 https://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

查询return 所有颜色值和每个 的最小值(价格)。