美文网首页
学习SQL必知必会的一些记录(二)

学习SQL必知必会的一些记录(二)

作者: abelishi | 来源:发表于2019-05-24 22:51 被阅读0次

    联结

    自联结(self-join)

    通过子查询实现这样的功能,

    select cust_id, cust_name, cust_contact
    from Customers
    where cust_name = (select cust_name
                                      from Customers
                                      where cust_contact = 'Jim Jones');
    

    同样的,通过自联结可以实现同样的功能。

    select c1.cust_id, c1.cust_name, c1.cust_contact
    from Customers as c1, Customers as c2
    where c1.cust_name = c2.cust_name
    and c2.cust_contact = 'Jim Jones';
    

    Remark:自联结就是一张表自己与自己的内联结。

    自然联结(natural join)

    无论何时对表进行联结,应该至少有一列不止出现在一个表中(被联结的列)。标准的联结(前面介绍的内联结)返回所有数据,相同的列甚至多次出现。自然联结排除多次出现,使每一列只返回一次。

    自然联结要求你只能选择那些唯一的列,一般通过对一个表使用通配符(select *),而对其他表的列使用明确的字集来完成。

    select C.*, O.order_num, O.order_date,
                      OI.prod_id, OI.quantity, OI.item_price
    from Customers as C, Orders as O, OrderItems as OI
    where C.cust_id = O.cust_id
    and OI.order_num = O.order_num
    and prod_id = 'RGAN01';
    

    外联结(outer join)

    许多联结将一个表中的行与另一个表中的行相关联,但有时候需要包含没有关联行的那些行。

    下面就是内联结和外联结在结果上表现的不同:


    WX20190524-184620@2x.png WX20190524-185412@2x.png WX20190524-185735@2x.png WX20190524-190716@2x.png WX20190524-191009@2x.png WX20190524-224245@2x.png

    相关文章

      网友评论

          本文标题:学习SQL必知必会的一些记录(二)

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