join on 与inner join 有没有区别?join on 与不带谓词的联接又有什么区别?

解决方案 »

  1.   

    默认应该是inner join 吧
    一般指没有写join和left join 或者inner join没有差别的
    cross join 就成了笛卡尔集合了
      

  2.   

    内联,左联,左外联等等的连接条件是必须的。
    CROSS JOIN , FULL JOIN等等之类是不需要的。t1
    id name
    1  a
    2  bt2
    id name
    1  a
    3  cselect a.*,b.* 
    from t1 a
    inner join t2 b
    on a.id=b.id
    /*结果取交集
    1 a 1 a
    */select a.*,b.* 
    from t1 a
    left join t2 b
    on a.id=b.id
    /*结果以左表为依具
    1 a 1 a
    2 b null null
    */select a.*,b.* 
    from t1 a
    cross join t2 b
    算排列组合。结果太多不写了.其它的你自己看看结果,多改几条示例数据,就明白了
      

  3.   

    大家看看这个,
    select * from a join b on a.infoid=b.id
    select * from a inner join b on a.infoid=b.id
    select * from a ,b on where a.infoid=b.id
    这三句有什么区别?
      

  4.   

    好像是孔乙己的问题,回字有几种写法~呵呵结果应该都一样的。
    我记得join on就是默认的inner join,都是内连接。
    第三个也是内连接的一种写法。不过oracal8以前好像不支持inner join 这种写法
    只能用select * from a ,b on where a.infoid(+)=b.id(+)
      

  5.   

    在T-SQL(也就是MSSQL中),三种是一样的.
    JOIN 默认是内连.
    FROM a,b WHERE a.id=b.id 也会转换为内连