繁体   English   中英

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

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

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

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

将返回所有红色的产品的最低价格。 我得到了一行返回。

我需要做的是以每种不同颜色的最低价格返回多行。

但是我不知道如何将搜索结果提供给“ WHERE”并获取多行。

我试过了

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

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

您可以使用GROUP BY功能:

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

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

这是你想要的吗?

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;

查询的公式建议(对我而言)建议您也需要其他列。

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

在mysql doc中阅读有关group by的更多信息。 https://dev.mysql.com/doc/refman/5.7/zh/group-by-functions.html

查询返回每个颜色的所有颜色值和min(price)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM