[英]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.