1.select a.*,b.* from S_groupuser a,S_group b where a.idgroup*=b.id and b.groupname='amd'2.select a.*,b.* from S_groupuser a left join S_group b on a.idgroup=b.id where b.groupname='amd'
这两条sql语句的执行结果是否应该相同?

解决方案 »

  1.   

    不一样!一个使用了左联接!
    当你的b.id有空值等不合a.idgroup的时候就知道了
      

  2.   

    1.只列出 a.idgroup=b.id 的记录  即id在两个表里都有的记录
    2.两个表作连接,列出所有两个表中的所有id和在一起的记录(不重复)
      即a表又b表没有或b表有a表没有的也会列出
      

  3.   

    to  jywu(新) 
    请问我的两条语句是不是都是左连接?如果是为什么会不一样呢?
      

  4.   

    在早期的 Microsoft® SQL Server™ 2000 版本中,使用 *= 和 =* 在 WHERE 子句中指定左、右外部联接条件。有时,该语法会导致有多种解释的不明确查询。FROM 子句中指定遵从 SQL-92 的外部联接,不会导致上述不确定性。因为 SQL-92 语法更为精确,所以,本版中未包括有关在 WHERE 子句中使用旧的 Transact-SQL 外部联接语法的详细信息。以后的 SQL Server 版本可能不再支持该语法。任何使用 Transact-SQL 外部联接的语句都应改为使用 SQL-92 语法。
      

  5.   

    当然不一样。
    如果你没有b.groupname='amd'这个条件的话,两句是完全一样的。
    但是如果你加了这个条件,搜索的意义就不一样了。可以写成
    select a.*,b.* from S_groupuser a left join S_group b on a.idgroup=b.id where (b.groupname='amd'or b.groupname is null)