Mysql  内连接与外连接

Mysql 内连接与外连接

Mysql 内连接与外连接

  • 建表语句
1
2
3
4
5
6
7
8
9
10
11
CREATE TABLE `a_table` (
`a_id` int(11) DEFAULT NULL,
`a_name` varchar(50) DEFAULT NULL,
`a_part` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8

CREATE TABLE `b_table` (
`b_id` int(11) DEFAULT NULL,
`b_name` varchar(50) DEFAULT NULL,
`b_part` varchar(50) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
  • a_table数据
1
2
3
4
1	张三	化学
2 李四 物理
3 王五 生物
4 赵六 数学
  • b_table 数据

    1
    2
    3
    4
    2	李四	物理
    3 王五 生物
    5 陈七 语文
    6 钱八 历史

    内连接

    • 又叫等值连接,返回两个表中连接字段相等的行

    • inner join on

    1
    2
    3
    4
    5
    6
    7
    #执行语句
    select * from a_table a inner join b_table b on a.a_id = b.b_id
    #执行结果
    2 李四 物理 2 李四 物理
    3 王五 生物 3 王五 生物
    #说明
    #组合两个表中的记录,返回符合关联条件的记录(交集)

    左连接

    • 又叫左外连接,返回包括左表的所有记录和右表中连接字段相等的记录。

    • left join on

      1
      2
      3
      4
      5
      6
      7
      8
      #执行语句
      select * from a_table a left join b_table b on a.a_id = b.b_id
      select * from a_table a left outer join b_table b on a.a_id = b.b_id
      #执行结果
      2 李四 物理 2 李四 物理
      3 王五 生物 3 王五 生物
      1 张三 化学
      4 赵六 数学

      右连接(右外连接)

    • 返回包括右表中所有记录和左表中连接字段相等的记录

    • right join/right outer join

      1
      2
      3
      4
      5
      6
      7
      8
      #执行语句
      select * from a_table a right join b_table b on a.a_id = b.b_id
      select * from a_table a right outer join b_table b on a.a_id = b.b_id
      #执行结果
      2 李四 物理 2 李四 物理
      3 王五 生物 3 王五 生物
      5 陈七 语文
      6 钱八 历史

      全连接(全外连接)

      • 返回表中所有记录和左右表中连接相等的记录

      • full join on

      • mysql中不支持全连接,可以通过左连接+union+右连接实现

        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        #执行语句
        #select a.a_id,b.b_id from a_table a full join b_table b on a.a_id = b.b_id
        select * from a_table a left join b_table b on a.a_id = b.b_id
        union
        select * from a_table a right join b_table b on a.a_id = b.b_id
        #执行结果
        2 李四 物理 2 李四 物理
        3 王五 生物 3 王五 生物
        1 张三 化学
        4 赵六 数学
        5 陈七 语文
        6 钱八 历史

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×