Mysql 列出当月最低价格的产品
我在MySql数据库中有一个名为“fiyatlar”的表。表包含每月和每年的多个产品id和价格。请检查下表中的示例:Mysql 列出当月最低价格的产品,mysql,vb.net,Mysql,Vb.net,我在MySql数据库中有一个名为“fiyatlar”的表。表包含每月和每年的多个产品id和价格。请检查下表中的示例: ID Price Month Year 11111 11.00 5 2016 11111 12.15 6 2016 11111 13.10 7 2016 22222 8.75 5 2016 22222 8.50 6 2016
ID Price Month Year
11111 11.00 5 2016
11111 12.15 6 2016
11111 13.10 7 2016
22222 8.75 5 2016
22222 8.50 6 2016
22222 8.00 7 2016
我需要找到当月最低价格的产品,并在datagrid中列出它们
提前谢谢。如果这是您的想法
SELECT *
FROM
(SELECT *
FROM fiyatlar
WHERE Year = YEAR(current_date())
AND Month = MONTH(current_date())) month_table
WHERE Price = MIN(Price)
根据新理解的需求进行更新: 我无法忍受不解决这个问题这将有助于:
SELECT fiyatlar.ID
FROM fiyatlar INNER JOIN
(SELECT ID, MIN(Price) AS Price
FROM fiyatlar GROUP BY ID) AS tmp
ON fiyatlar.ID = tmp.ID
AND fiyatlar.Price = tmp.Price
WHERE Year = YEAR(current_date())
AND Month = MONTH(current_date());
这是我重复最小值的测试表:
11111 12.15 6 2016
11111 11.00 5 2016
11111 10.90 10 2015
11111 10.90 7 2016
22222 9.00 9 2015
22222 8.75 5 2016
22222 8.70 7 2015
22222 8.50 6 2016
22222 7.90 4 2015
22222 7.70 8 2015
22222 7.70 7 2016
33333 8.99 1 2016
33333 7.80 2 2016
33333 3.90 3 2016
33333 5.90 4 2016
33333 7.90 5 2016
33333 5.90 6 2016
33333 3.90 7 2016
我还没有弄清楚mysql查询。所以我什么都没试过。
最低价格的产品
如果不是(1)最低价格的,有多少?很大程度上只是样本中的SQLSo问题,您希望查询的输出是什么?对于上面的样本表,id为11111的产品不是当月的最低价格(假设当月为7),但id为2222的产品是当月的最低价格。因此,它必须忽略1111,将2222添加到数据网格中。基本上我只需要检查当前月份,如果它的价格是本月之前的最小值,则添加到datagrid,else忽略并移动到下一个id。@Ardeth我创建了您的示例表,并验证了我的答案给出了本月最低价格的项目。是的,这是我需要的,但它给出了一个#1111-无效使用组函数errorDear Topshop。谢谢你的回答,但不幸的是工作不正确。它只带来了一种产品,而不是列表中最便宜的:)你说你每个月只想要一种产品,鉴于上面的示例表,它确实收回了最便宜的产品。我只是测试了一下,实际上他从来没有澄清过<代码>最低价格的产品(注意复数s)可能意味着5、3或1个最低价格的商品。不,你搞错了。假设我有500多种产品,每种产品每月和每年都有自己的价格。我需要得到的产品,如果它的价格是最便宜的一个,直到现在在本月。可能有多个产品在本月的列表中具有最佳价值。您在评论中说,如果某个商品不是本月最便宜的,则跳过它。所以,为什么不在给定示例的完整结果集中显示您想要的结果,这样就不会有更多的混淆了。