• SQL-关联查询【转】


    T_A A表 T_B B标,id为表与表相关联的字段`
    创建相关表结构

    CREATE TABLE Table_B( id INT(2), serNum VARCHAR(10) ); 
    CREATE TABLE Table_A( id INT(2), serNum VARCHAR(10) ); 
    INSERT INTO table_a (id, serNum)
     VALUES (1,'A000101'),(2,'A000102'),(3,'A000103'),(5,'A000104'),(8,'A000105'),(4,'A000106');
    INSERT INTO table_b (id, serNum) 
     VALUES (1,'B000201'),(2,'B000202'),(3,'B000203'),(6,'B000204'),(7,'B000205'),(9,'B000206');
    

    Table_A
    id serNum
    ------ ---------
    1 A000100
    2 A000102
    3 A000103
    5 A000104
    8 A000105
    4 A000106

    Table_B
    id serNum
    ------ ---------
    1 B000201
    2 B000202
    3 B000203
    6 B000204
    7 B000205
    9 B000206

    1. inner join 内连接查询

    SELECT a.*,b.*
    FROM table_a a
    INNER JOIN table_b b
    ON a.id=b.id

    查询结果:
    id serNum id serNum
    ------ ------- ------ ---------
    1 A000100 1 B000201
    2 A000102 2 B000202
    3 A000103 3 B000203

    注释:INNER JOIN与JOIN是相同的。

    2. left join 左关联查询

    以左表作为基础表去关联右表,查询的结果为左表的子集

    SELECT a.*,b.*
    FROM table_a a
    LEFT JOIN table_b b
    ON a.id=b.id

    查询结果:
    id serNum id serNum
    ------ ------- ------ ---------
    1 A000100 1 B000201
    2 A000102 2 B000202
    3 A000103 3 B000203
    5 A000104 (NULL) (NULL)
    8 A000105 (NULL) (NULL)
    4 A000106 (NULL) (NULL)

    3.right join 右关联查询

    以右表作为基础表去关联左表,查询的结果为右表的子集

    SELECT a.*,b.*
    FROM table_a a
    RIGHT JOIN table_b b
    ON a.id=b.id

    查询结果:
    id serNum id serNum
    ------ ------- ------ ---------
    1 A000100 1 B000201
    2 A000102 2 B000202
    3 A000103 3 B000203
    (NULL) (NULL) 6 B000204
    (NULL) (NULL) 7 B000205
    (NULL) (NULL) 9 B000206

    4.左连接-内连接

    取左表的部分集合,但又不存在右表中

    SELECT a.*,b.*
    FROM table_a a
    LEFT JOIN table_b b
    ON a.id=b.id
    WHERE b.id IS NULL

    查询结果:
    id serNum id serNum
    ------ ------- ------ --------
    5 A000104 (NULL) (NULL)
    8 A000105 (NULL) (NULL)
    4 A000106 (NULL) (NULL)

    5. 右连接-内连接

    取有表的部分数据,但又不存在左表中

    SELECT a.*,b.*
    FROM table_a a
    RIGHT JOIN table_b b
    ON a.id=b.id
    WHERE a.id IS NULL

    查询结果:
    id serNum id serNum
    ------ ------ ------ ---------
    (NULL) (NULL) 6 B000204
    (NULL) (NULL) 7 B000205
    (NULL) (NULL) 9 B000206

  • 相关阅读:
    Centos7
    appium+python常见报错(appium方面)
    python标准库之datetime
    python异常捕获
    python写入文件和读取文件
    python标准库之collections
    python导入类
    python3+robotframework+pycharm安装运行
    python 继承/父类和子类的关系
    python_类
  • 原文地址:https://www.cnblogs.com/cwind/p/11062440.html
Copyright © 2020-2023  润新知