zoukankan      html  css  js  c++  java
  • sql的join用法

    SQL join 用于把来自两个或多个表的行结合起来,sql join主要包括inner join、 left join 、right join 、full outer join。

    先介绍一下表里面的数据。

    第一张表 teacher

    第二张表 student


    首先是inner join,sql如下

    select * from student as s inner join teacher as t on s.id = t.id;

    执行结果

    解释图


    left join,又可以写作left outer join ,sql如下

    select * from student as s left join teacher as t on s.id = t.id;

    执行结果

    解释图


    right join,又可以写作right outer join,sql如下

    select * from student as s right join teacher as t on s.id = t.id;

    执行结果

    解释


    full outer join,mysql不支持full outer join,sql应该写成

    SELECT 
        s.id AS s_id,
        s.FIRST_NAME AS s_f,
        s.LAST_NAME AS s_l,
        t.FIRST_NAME AS t_f,
        t.LAST_NAME AS t_l,
        t.id AS t_id
    FROM
        student AS s
            LEFT JOIN
        teacher AS t ON s.id = t.id 
    UNION SELECT 
        s.id AS s_id,
        s.FIRST_NAME AS s_f,
        s.LAST_NAME AS s_l,
        t.FIRST_NAME AS t_f,
        t.LAST_NAME AS t_l,
        t.id AS t_id
    FROM
        teacher AS t
            LEFT JOIN
        student AS s ON s.id = t.id

    输出结果

    解释

    参考:

    http://www.w3cschool.cc/sql/sql-join.html

    http://stackoverflow.com/questions/38549/difference-between-inner-and-outer-joins

    http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

    http://stackoverflow.com/questions/4796872/full-outer-join-in-mysql

  • 相关阅读:
    C++ 类 析构函数
    Oracle 11g rac 添加新节点测试
    rac添加新节点的步骤与方法
    X 传输表空间方法留待整理
    1913: 成绩评估
    1066: 输入n个数和输出调整后的n个数
    1005: 渊子赛马
    Problem Y: 哪一天,哪一秒?
    Problem T: 结构体学生信息排序
    Problem O: 国家排序
  • 原文地址:https://www.cnblogs.com/wardensky/p/4147729.html
Copyright © 2011-2022 走看看