本帖最后由 u013344315 于 2014-01-05 08:48:04 编辑

解决方案 »

  1.   

    进行查询:
    select * from programinfo ,typeinfo
    where programinfo.programtype=typeinfo.id进行内连接查询:
    select * from programinfo inner join typeinfo
    on programinfo.programtype=typeinfo.id其实这两种查询虽然写法不同,一个在where中写了条件,一个在on后面写条件,但是本质上是等价的,说白了,都是内链接。
      

  2.   

    也就是说这2种写法是完全一样的意思,只是写法不同。不过,我建议你用第二种写法,因为第二种写法更加通用,清晰。你现在是2个表的关联,但像我原来的公司,经常写10个表的关联,这个时候通过inner join ...on 的这种写法,明显就清晰多了。而且除了inner join,用的更多的可能就是left join 了,也就是左连接,但是左连接,如果用where的方式写,where * 这种方式在sql server 2005以后,也不支持了,所以还得用left join on的方式来写
      

  3.   

    除非有什么猫腻,不然两种写法最少在SQLServer2014之前都是等价的,不需要在意这些。一个是旧写法,join的是新写法而已。
      

  4.   

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

  5.   


    select * from tab_a,tab_b
    等价于
    select * from tab_a 
    cross join tab_b了解了inner join 及cross join你就明白了!
      

  6.   

    一样的,均是inner join ...
      

  7.   

    第一种写法不用where 默认应该是笛卡尔积sql99语法规范中好像不承认这种写法吧,最好写的代码符合规范,这样较为通用
      

  8.   

    只是两种写法而已,而inner join 这些是现行的国际标准,有些dbms不只是第一种,所以建议使用标准写法