我发现sql中可以完全不用join关键字,用select...from...where就可以完成同样的功能
我很菜啊,请问各位大侠是不是这样呀?

解决方案 »

  1.   

    不一定的呀,比如下面这种情况呢?
    http://community.csdn.net/Expert/topic/4695/4695837.xml?temp=.3998377还有建笛卡儿集的适合呢?
    呵呵
      

  2.   

    在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
    Microsoft® SQL Server™ 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字: LEFT OUTER JOIN 或 LEFT JOINRIGHT OUTER JOIN 或 RIGHT JOINFULL OUTER JOIN 或 FULL JOIN 
    SQL Server 支持 SQL-92 外联接语法,以及在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。由于 SQL-92 语法不容易产生歧义,而旧式 Transact-SQL 外联接有时会产生歧义,因此建议使用 SQL-92 语法。
      

  3.   

    两者是等价的~
    不过,在有些数据库里面,可能会不支持*=或=*之类的写法,只支持join
      

  4.   

    Microsoft® SQL Server™ 2000 对在 FROM 子句中指定的外联接使用以下 SQL-92 关键字: LEFT OUTER JOIN 或 LEFT JOIN
    RIGHT OUTER JOIN 或 RIGHT JOIN
    FULL OUTER JOIN 或 FULL JOIN 
    SQL Server 支持 SQL-92 外联接语法,以及在 WHERE 子句中使用 *= 和 =* 运算符指定外联接的旧式语法。由于 SQL-92 语法不容易产生歧义,而旧式 Transact-SQL 外联接有时会产生歧义,因此建议使用 SQL-92 语法。
      

  5.   

    在 SQL-92 标准中,内联接可在 FROM 或 WHERE 子句中指定。这是 WHERE 子句中唯一一种 SQL-92 支持的联接类型。WHERE 子句中指定的内联接称为旧式内联接。
      

  6.   

    两者在有些数据库里是等价的。
    但还有些数据库可能不支持where 条件*=条件,只支持left join 之类的写法.
      

  7.   

    where 子句相当于inner join,也就是自然连接;
    而连接方式不止自然连接这一种;
    还有 left join , right join等其他外连接方式。
    而不同连接方式得到结果的记录条数是不同的;
    其花费的时间和内存空间也可能会有很大差别。