Login
网站首页 > 文章中心 > 其它

mysql中inner?join和left?join如何使用

作者:小编 更新时间:2023-08-11 21:33:28 浏览量:212人看过

这篇文章主要介绍"mysql中inner?join和left?join如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"mysql中inner?join和left?join如何使用"文章能让粉丝们变的更强解决问题.

区别

inner join 场景

设计两张表:

channel 频道表:有频道id、频道name等

module 模块表:模块id、模块name、channe_id.

页面展示频道时,可能会有新增了一个频道但是没有模块,此时不能用inner join 不然新增的模块查询不出来,所以用left join

?select?channel.*?from?channel?left?join?modules?on?channel.id?=?modules.channel_id
?where?page_id=1
?group?by?channel.id?order?by?channel.new_sort?asc?,?channel.id?desc

以下这种情况新创建的频道就不会显示,并且没有模块的频道也不会显示.

select?channel.*?from?channel?inner?join?modules?on?channel.id=modules.channel_id
where?page_id=1?group?by?channel.id?order?by?channel.new_sort?asc?,?channel.id?desc

最后:有点疑问,频道只做显示频道相关信息,并没有用到关联的模块信息,所以感觉这样也能满足需求了.后续发现问题再更吧

?select?channel.*?from?channel
?where?page_id=1?order?by?channel.new_sort?asc?,?channel.id?desc

额~补充问题,上面遗留的问题是页面上需要查询module的id所以才关联了.

之前还遇到了个inner join 的场景,后续再补~

inner join 场景

新加一个策略表policy_lib 、然后再创建一个中间表channel_policy记录 channel频道和policy_lib策略表关联.那么显然sql这样写

select?policy_lib.id,channel_policy.policy_id,channel_policy.channel_id,channel.id?from?policy_lib?inner?join?channel_policy?on?channel_policy.policy_id=policy_lib.id?
inner?join?channel?on?channel.id=channel_policy.channel_id

使用inner join 显然结果查询出来不会有空的情况,如果用left join 万一表中有脏数据,左边有数据右边时空的,在处理的时候还需要考虑是否有空的情况显然不合理.

关于"mysql中inner?join和left?join如何使用"的内容就介绍到这里了,感谢大家的阅读.如果想了解更多行业相关的知识,可以关注***行业资讯频道,小编每天都会为大家更新不同的知识点.

以上就是土嘎嘎小编为大家整理的mysql中inner?join和left?join如何使用相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章