内连接与这种写法有什么不同(很好的讨论)

https://bbs.csdn.net/topics/390686126

进行查询:
select * from programinfo ,typeinfo
where programinfo.programtype=typeinfo.id

进行内连接查询:
select * from programinfo inner join typeinfo
on programinfo.programtype=typeinfo.id

为什么查询结果会一样?那这两种查询有什么不同?(下图是两种方法的查询结果)

进行查询:
select * from programinfo ,typeinfo
where programinfo.programtype=typeinfo.id

进行内连接查询:
select * from programinfo inner join typeinfo
on programinfo.programtype=typeinfo.id

其实这两种查询虽然写法不同,一个在where中写了条件,一个在on后面写条件,但是本质上是等价的,说白了,都是内链接

也就是说这2种写法是完全一样的意思,只是写法不同。

不过,我建议你用第二种写法,因为第二种写法更加通用,清晰。

你现在是2个表的关联,但像我原来的公司,经常写10个表的关联,这个时候通过inner join …on 的这种写法,明显就清晰多了。

而且除了inner join,用的更多的可能就是left join 了,也就是左连接,但是左连接,如果用where的方式写,where * 这种方式在sql server 2005以后,也不支持了,所以还得用left join on的方式来写

前面一種是2000的寫法.後一種是2005以後的語法.

一个是等值连接,一个是内连接。效果是相同的,执行效率应该也是一样的。
我在学校的时候是用第1种写法,出来工作就用第2种,好像是sql语法标准不一样,
现在一直用第2种写法,都习惯了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值