如下:取每个月内的最小price项的id name不同的要区分 表名 goods id name date price 1 aaa 2016-11-4 100 2 aaa 2017-1-4 100 3 aaa 2017-1-6 90 4 aaa 2017-2-4 120 5 aaa 2017-3-4 110 6 aaa 2017-3-7 100 7 aaa 2017-1-9 90 8 bbb 2016-11-4 100 9 bbb 2017-1-4 100 10 bbb 2017-1-6 90 11 bbb 2017-2-4 120 12 bbb 2017-3-4 110 13 bbb 2017-3-7 100 14 bbb 2017-1-9 90 请参考:https://www.oschina.net/question/2821148_2219037
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
SELECT a.id,a.name,a.date,a.price FROM del_check a INNER JOIN (SELECT MONTH(date) mon,MIN(price) minprice FROM del_check GROUP BY mon) b ON MONTH(a.date)=b.mon and a.price=b.minprice ORDER BY a.date————内链接 2这验证没有问题######mysql数据库比较简单: SELECT id,name,date,MIN(price) price FROM del_check GROUP BY SUBSTRING(date,6,2)######你这么写不对吧######给你几个关键点的参考: 最小价格 用 MIN(price) , 更具日期算得月份用 mouth(date),分组用Group By############也就是说,现在只有月份——min()是对应的,和日期、id都是不对应的。目前这样我觉得最好的加一个月份字段来完成这是最方便的,如果我其他的我会第一时间告诉你,同样您也是######回复 @Nehway : 也就是说,现在只有月份——min()是对应的,和日期、id都是不对应的。目前这样我觉得最好的加一个月份字段来完成这是最方便的,如果我其他的我会第一时间告诉你,同样您也是######回复 @treker : 是我出错了! group by对于非表中的字段,会让聚合函数min、max等的求值和原表的记录脱节,这也是mysql和orcle的一些区别的跳线######第一条数据就不对吧######order by price asc limit 0,1 这不就行了吗######回复 @treker : 对不住 没看清题意 还以为只去最小的金额呢,这个必须的group by 分组 用我的排序就不行了######回复 @treker :######能否说的详细些######
加个月份和原来的date一样吧######mysql中group by对于的字段和对应比如聚合函数min、max等的求值,与原表非分组字段没有关系(oracle直接查询不允许有非分组字段),这里我忽视了,现在只要直接2表联查就可以搞定了!############这次真的没有问题了,也方便分组聚合函数和原表的结合######回复 @Nehway : 非常感谢!######回复 @Nehway : 感觉逻辑上不太理解,不过结果是正确的######回复 @treker : 2表联查的话,这个很简单,可以改变连接方式就可以了,把left join改为自然连接或者内链接就可以了######回复 @Nehway : 相同月份相同最小价格不同name的无法区分,只能得到一条数据######回复 @treker : 哪里有问题?######