这篇文章主要介绍"mysql中inner?join和left?join如何使用"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"mysql中inner?join和left?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 的场景,后续再补~
新加一个策略表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如何使用相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!