美文网首页JavaWeb 知识点
SQL总结2: Join、Inner Join、Left Joi

SQL总结2: Join、Inner Join、Left Joi

作者: rufuss | 来源:发表于2018-08-23 22:46 被阅读2次

    Join可以根据多张表之间的关系用来获取新表?反正是类似的效果。
    假设有以下两张表,Users 和 orders:


    表一:Users 表二:orders

    1 Join

    执行以下语句:

    select * from Users join orders where Users.id=orders.userId;
    

    可得到如下表:


    表三

    若不使用join,执行以下语句:

    select * from Users inner join orders where Users.id=orders.userId;
    

    发现结果是一样的。

    2 Left Join、Right Join

    执行:

    select * from Users left join orders where Users.id=orders.userId;
    

    发现报错,不知为何,这个时候把 where 改成 on 再执行:

    select * from Users left join orders on Users.id=orders.userId;
    

    得到如下结果:


    表4

    表 4 结合了表1与表2的所有列,且保留了左表的所有行,若左表的行没有与右表对应的行,则用null填充。
    Right join和left join效果是类似的。
    执行

    select * from Users right join orders on Users.id=orders.userId;
    

    可得如下结果:


    表5

    若采用 full join,执行:

    select * from Users full join orders on Users.id=orders.userId;
    

    发现报错!原因是:mysql不支持full join。(这里用的是mysql)
    替代的写法是采用 union:

    select * from Users right join orders on Users.id=orders.userId 
    union 
    select * from Users left join orders on Users.id=orders.userId;
    

    可得到如下结果:


    表6

    References:
    http://www.w3school.com.cn/sql/sql_join_full.asp
    https://blog.csdn.net/lasoup/article/details/52772365

    相关文章

      网友评论

        本文标题:SQL总结2: Join、Inner Join、Left Joi

        本文链接:https://www.haomeiwen.com/subject/azlviftx.html