mysql查询近一年数据 有的月没有数据但是还是需要展示商品名

img

现在写的sql只能展示有的数据 如果没有的话显示是这样的

img


需要将下面这些空的月里面也查询出商品的名字 请问大家怎么改

方案一,你这个数据库里应该还有个完整的商品信息表吧,你把那个商品信息表和你做的这个月份数据进行笛卡尔积join,即不使用任何条件,即可得到任意商品和任意月份的组合数据,这个时候再用这个数据去left join你的订单数据即可。但是这个缺点是,你商品表里可能有很多垃圾数据,即从未进行过任何交易的商品,这样最后你的数据里就会存在很多无用数据。所以,你还可以尝试用这个订单数据distinct商品出来替代前面说的这个完整商品信息表,但缺点就是查询效率变低了

方案二,如果是8.0以上,可以使用with递归,判断本行没有数据就用上一行的数据(商品名称),但你没写数据库版本,也没给建表和模拟数据的sql,我就不细说了,可以参考下面这个问答,只是"WITH cte_name AS" 要改成"WITH RECURSIVE cte_name AS",和其他数据库相比多了个"RECURSIVE"

你都没数据,只能用默认值代替了,加个条件

本月没有就拿上个月的,依次类推

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632