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 :######能否说的详细些######
引用来自“Nehway”的评论
加个月份和原来的date一样吧######mysql中group by对于的字段和对应比如聚合函数min、max等的求值,与原表非分组字段没有关系(oracle直接查询不允许有非分组字段),这里我忽视了,现在只要直接2表联查就可以搞定了!############这次真的没有问题了,也方便分组聚合函数和原表的结合######回复 @Nehway : 非常感谢!######回复 @Nehway : 感觉逻辑上不太理解,不过结果是正确的######回复 @treker : 2表联查的话,这个很简单,可以改变连接方式就可以了,把left join改为自然连接或者内链接就可以了######回复 @Nehway : 相同月份相同最小价格不同name的无法区分,只能得到一条数据######回复 @treker : 哪里有问题?######
引用来自“Nehway”的评论
你这个和下面的 https://www.oschina.net/question/2821148_2219037 差不多,没有区分开name