• mysql多表查询方法(left join(左连接),right join (右连接),inner join (内连接)的区别)


    表A记录如下: 
    aID aNum 
    1 a20050111 
    2 a20050112 
    3 a20050113 
    4 a20050114 
    5 a20050115 

    表B记录如下: 
    bID bName 
    1 2006032401 
    2 2006032402 
    3 2006032403 
    4 2006032404 
    8 2006032408 

    创建这两个表SQL语句如下: 
    CREATE TABLE a 
    aID int( 1 ) AUTO_INCREMENT PRIMARY KEY , 
    aNum char( 20 ) 

    CREATE TABLE b( 
    bID int( 1 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , 
    bName char( 20 ) 


    INSERT INTO a 
    VALUES ( 1, 'a20050111' ) , ( 2, 'a20050112' ) , ( 3, 'a20050113' ) , ( 4, 'a20050114' ) , ( 5, 'a20050115' ) ; 

    INSERT INTO b 
    VALUES ( 1, ' 2006032401' ) , ( 2, '2006032402' ) , ( 3, '2006032403' ) , ( 4, '2006032404' ) , ( 8, '2006032408' ) ; 

    实验如下: 
    1.left join(左联接) 

    sql语句如下: 
    SELECT * FROM a 
    LEFT JOIN b 
    ON a.aID =b.bID 

    结果如下: 
    aID aNum bID bName 
    1 a20050111 1 2006032401 
    2 a20050112 2 2006032402 
    3 a20050113 3 2006032403 
    4 a20050114 4 2006032404 
    5 a20050115 NULL NULL 
    (所影响的行数为 5 行) 

    结果说明: 
    left join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的. 
    换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID). 
    B表记录不足的地方均为NULL. 

    2.right join(右联接) 

    sql语句如下: 
    SELECT * FROM a 
    RIGHT JOING b 
    ON a.aID = b.bID 

    结果如下: 
    aID aNum bID bName 
    1 a20050111 1 2006032401 
    2 a20050112 2 2006032402 
    3 a20050113 3 2006032403 
    4 a20050114 4 2006032404 
    NULL NULL 8 2006032408 
    (所影响的行数为 5 行) 

    结果说明: 
    仔细观察一下,就会发现,和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充. 

    3.inner join(相等联接或内联接) 

    sql语句如下: 
    SELECT * FROM a 
    INNER JOIN b 
    ON a.aID =b.bID 

    等同于以下SQL句: 
    SELECT * 
    FROM a,b 
    WHERE a.aID = b.bID 

    结果如下: 
    aID aNum bID bName 
    1 a20050111 1 2006032401 
    2 a20050112 2 2006032402 
    3 a20050113 3 2006032403 
    4 a20050114 4 2006032

    转自:http://blog.sina.com.cn/u/2759866740

  • 相关阅读:
    SJTU T4143 推箱子
    Markdown基本语法
    命令行的操作——cd
    C++ ------- 类和对象
    数据结构------栈和队列
    MySQL------ 子查询
    MySQL------ SQL99语法
    C++------内存分区模型
    第三章------数据链路层
    MySQL------ SQL92语法
  • 原文地址:https://www.cnblogs.com/zqphp/p/3777194.html
Copyright © 2020-2023  润新知