oracle数据库表联查,oracle数据库表联查

这篇博客讨论了如何使用SQL查询从数据库中找出每个月份的最低价格。作者指出,最初的查询存在错误,因为GROUP BY操作与非分组字段不匹配。通过调整为内连接查询,解决了这个问题。讨论了MySQL与Oracle数据库在处理非分组字段上的差异,并提供了修正后的查询语句,确保了结果的正确性。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值