mysql里面的左连接和右连接,我感觉都一样啊,比如select * from table1 left join table2 on table1.id=table2.id
如果变成右连接,直接变成select * from table2 left join table1 on table1.id=table2.id就可以了,何必要有right join呢,谢谢各位,请多多指点

解决方案 »

  1.   

    当然不能完全替代,select * from table1 right join table2 on table1.id=table2.id, table 3 WHERE table1.x = table3.x
      

  2.   

    一个是从左表返回所有行,即使在右表中没有匹配的行。
    一个是从右表返回所有行,即使在左表中没有匹配的行。left  join会返回左表中的所有行,然后显示右表中table1.id=table2.id的信息。
    right join会返回右表中的所有行,然后显示左表中table1.id=table2.id的信息。你表建的不对,正常是表1中应该建一个table2_id与table2.id进行关联。
    你没有这么建,所以感觉不出来结果有什么明显不对。
      

  3.   

    left join会返回左表中的所有行
    right join会返回右表中的所有行
      

  4.   

    建议楼主自己亲自动一下手,做个实验。create table a( x int primary key);
    insert into a values (1),(2),(3),(4);create table b( y int primary key);
    insert into b values (5),(6),(3),(4);然后试一下,看看结果是什么。
      

  5.   

    lz想表达的意思是
    select * from table1 left join table2 on table1.id = table2.id
    等价于(不考虑字段顺序什么的)
    select * from table2 right join table1 on table1.id = table2.id
    他认为,所有的right都可以用left来替代
      

  6.   

    左、右连接相对而言的,将两表位置替换一下,LEFT JOIN就可以替换RIGHT JOIN
      

  7.   

    不能完全替代,如果right join的左表又inner join了其他表的话
      

  8.   

    呵呵说明你还没看明白lz的题目目的。
    lz问的是right join有什么存在的必要,因为他认为可以用left替代,并举了这个例子。而不是,问这个例子里面,left和right有什么区别。
      

  9.   

    正好无聊,上堂语文课吧mysql里面的左连接和右连接,我感觉都一样啊,比如select * from table1 left join table2 on table1.id=table2.id
    如果变成右连接,直接变成select * from table2 left join table1 on table1.id=table2.id就可以了,
    何必要有right join呢,谢谢各位,请多多指点
      

  10.   

    不太清楚,你这个和下面这个不一样吗?
    select * from table2 left join table1 on table2.id=table1.id, table 3 WHERE table1.x = table3.x
    ————————————————————————————————
    基于CSDN论坛提供的插件扩展功能,自己做了个签名档工具,分享给大家,欢迎技术交流 :)