请问:应该用LEFT OUTER JOIN还是INNER JOIN?

seasadmin 2004-12-10 11:53:41
有一个信息资费表(信息类型,资费,信息代码),还有一个定制情况表(手机号,信息类型)
我想查看每个手机号应取的费用,用下面的语句查询时有的手机号对应的收费是 null,选出的记录数多
select a.手机号,b.信息代码,b.资费 from 信息资费表 as a left outer join 定制情况表 as b
on a.信息类型=b.信息类型
用另外一条语句
select a.手机号,b.信息代码,b.资费 from 信息资费表 as a inner join 定制情况表 as b
on a.信息类型=b.信息类型
不会出现手机号对应收费值和信息代码是null的记录,但是选出的记录数少。说明:在定制情况表中手机号对应的每一种信息类型在信息资费表中都有,而且资费和信息代码都不是null。
我想这是LEFT OUTER JOIN和INNER JOIN的选择问题,最奇怪的是:定制同一种信息类型的手机号有的资费是null 但是有的就不是,而是实际的资费值。
请各位帮我分析分析这是什么原因啊。谢谢了
...全文
139 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
bob59 2004-12-13
  • 打赏
  • 举报
回复
我有个问题:用left outer join查询速度大大降低,用什么连接方式会提高查询速度?
seasadmin 2004-12-10
  • 打赏
  • 举报
回复
谢天谢地,问题终于解决了,问题的关键在于外联接的条件,如果有两个条件,后一个条件不满足时就会返回空值,不好意思,我上面写的语句意思没表达清楚
select a.手机号,b.信息代码,b.资费 from 信息资费表 as a left outer join 定制情况表 as b
on a.信息类型=b.信息类型 and 是否收费='是'会返回空值,那些空值是是否收费='否'的
U2U2U2U2 2004-12-10
  • 打赏
  • 举报
回复
大家好!我想问一下!那么left outer join 和 left join 又有何区别呢,谢谢
seasadmin 2004-12-10
  • 打赏
  • 举报
回复
现在的问题是不同的手机号定制同样的信息类型,为什么有的手机号的信息资费值是空而有的不是空
comszsoft 2004-12-10
  • 打赏
  • 举报
回复
楼上说的很清楚了,看你的需求了
vinsonshen 2004-12-10
  • 打赏
  • 举报
回复
呵呵~~LEFT OUTER JOIN是外联接,会返回left前面表的所有记录(若后面表没有符合的相应记录,则显示为NULL,而INNER JOIN是内联接,会返回同时符合条件的两个表的记录。
kuangtu007 2004-12-10
  • 打赏
  • 举报
回复
只能帮你顶
zanyzyg 2004-12-10
  • 打赏
  • 举报
回复

是不是没有对应的数值(记录),就是null了呀?

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧