我设法在prestashop上编写了一个SQL查询,以导出具有我的电子商务属性的产品和组合。现在,我想过滤结果,以获得每种产品的最便宜组合。
例如,我得到了这张表,其中包含2种产品和每种产品3种可能的组合:
产品价格
A 22€
A 44€
A 100€
B 15€
B 30€
B 45欧元
我想知道是否有一种方法可以使用WHERE命令或其他方法对SQL查询进行过滤,从而仅给出最便宜的结果。
因此查询SQL的结果将是:
产品-价格
A 22€
B 15欧元
可以吗?
答案 0 :(得分:0)
一个简单的GROUP BY
查询应该可以工作:
SELECT product, MIN(price) AS min_price
FROM yourTable
GROUP BY product;
编辑:
如果您的价格数据实际上是文本,并且在每个价格字符串的末尾都有一个欧元符号,那么您必须将其删除,并在采用最小值之前转换为整数:
SELECT
product,
MIN(CAST(LEFT(price, CHAR_LENGTH(price) - 1) AS UNSIGNED)) AS min_price
FROM yourTable
GROUP BY product;
但是,最好不要将货币符号和数字价格数据一起存储在同一列中。相反,您可以添加一个数字列,该列将保持价格对应的货币。然后,您只需要使用我的第一个查询即可获得所需的答案。
答案 1 :(得分:0)
您是否尝试过简单的聚合查询?
select product, min(price) as cheapest_price
from mytable
group by product;
这将为您提供每种产品价值的最低价格。