就这条SQL
我的条件是 t1.role_id = t2.role_id  但结果显示的时候 role_id确不是相等的,这是为什么????
下面是结果
select t2.exten,t1.role_info,t1.role_id,t2.role_id from role_auth_new t1 left join exten_role t2 on t1.role_id = t2.role_id where t1.role_group='3';

解决方案 »

  1.   

    left join是role_auth_new这个表是主表,是全显示的。过滤的是exten_role这个表。
    用inner join就过滤了。
      

  2.   


    这就是左连接,当右边的表没有适合的记录的时候,如果你查询右边表的列,那么显示的就是null值,用null值来代替的。
      

  3.   


    要是你讲left join换成inner join,那么就查询就没有记录了,这就是左连接和内连接的区别。
      

  4.   

    是 t2.role_id显示为空吧。 LEFT JOIN的特性如此。
    《数据库系统概论(第四版)》 王珊 萨师煊   高等教育出版社 (掌握基础知识和概念)