• mysql_select 多表查询


    一、等值连接
    原理:将多张单表组成一张逻辑大表
      语法:
    select *  from 表A,表B   where 表A.主键=表B.外键 and 查询条件
    select *  from 表A,表B   where 表A.主键=表B.外键 and C.主键=B.外键 and 查询条件
     
    二、内连接
    先判断,再连接
    内连接的结果和等值连接的结果一样
    语法:  两张表
    select * 
    from 表A inner join 表B 
    on 表A.主键=表B.主键 
    where 查询条件
     
    语法:  三张表
    select * 
    from 表A inner join 表B 
    on 表A.主键=表B.主键 
    inner join 表C 
    on 表C.主键=表B.主键 
    where 查询条件
     
    例子:
    1) 内连接   
      select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id       
      结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
     
    三、嵌套查询(子查询)
    原理:将多个单表查询的SQL语句拼接在一起
     
    单表查询结果
        单个值:=、!=、>、>=、<、<=
        多个值:用集合 in、not in
    select *
    from 表名
    where 字段 in (select   *  from 表名  
    where 字段 = '**' )  and 字段2 =  (
    select   *  from 表名  
    where 字段 = '**' )
     
     
    例子:   
    -------------------------------------------------
      a表     id   name     b表     id   job   parent_id   
                  1   张3                   1     23     1   
                  2   李四                 2     34     2   
                  3   王武                 3     34     4       
      a.id同parent_id   存在关系   

     
    四、左外连接
    LEFT  JOIN  或  LEFT OUTER JOIN 
    select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id  
     结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
      3   王武                  null   
    左向外联接的结果集包括  LEFT OUTER子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。   
     
    五、右外连接
    RIGHT  JOIN 或 RIGHT  OUTER  JOIN 
    select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id      
     结果是     
      1   张3                   1     23     1   
      2   李四                  2     34     2   
      null                       3     34     4   
    右向外联接是左向外联接的反向联接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。。  


    六、完全连接
    FULL  JOIN 或 FULL OUTER JOIN
    select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id   
    结果是     
      1   张3                  1     23     1   
      2   李四                 2     34     2   
      null                   3     34     4   
      3   王武                 null

    完整外部联接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行,则整个结果集行包含基表的数据值。 

  • 相关阅读:
    设计模式之适配器模式(Adapter)
    数组中的趣味题(二)
    VSTS 2008 自定义签入代码审查策略
    自定义 Vista 系统下程序运行级别
    全国省份,城市,地区全数据(SQL版与XML版)包括各城市邮编
    LINQ 从数据库读数据生成 XML
    IE 8 Beta 2 初体验 隐藏了的"IE7模式"
    利用宏帮助快速录入代码
    你现在的生活是你n年前决定的
    控制参数个数的几种方式
  • 原文地址:https://www.cnblogs.com/lixy-88428977/p/9564333.html
Copyright © 2020-2023  润新知