zoukankan      html  css  js  c++  java
  • 小贝_mysql select连接查询

    select连接查询

    简要:
    一、union联合查询
    二、左右内连接


    一、union联合查询

    作用: 把2次或多次查询结果合并起来

    具体: (表1查询结果) union (表2查询结果)

    运行: 先算表1查询结果,再算表2查询结果。再通过union把结果联合起来。

    总结:

    a、左右查询结果列数一致

    b、终于显示结果以第一张表的列名为主

    c、左右查询结果的列类型最好也一致。不然就会进行转换。

    由低到高。如表1结果A列为整形,表2结果A列为浮点型。则表1在A列的结果转换为浮点型

    d、能够是不同表

    e、假设不同的语句中取出的行,有全然同样(每一个列的值都同样),那么同样的行将会合并(去重)

    案例:

    查询 这种结果:

    a16,b 21,c 14,d 41

    步骤1: union来获取两张表的查询结果


    步骤2: 把步骤1的查询结果看成暂时表

     

    不足之处: 上述案例中表ta和tb中不存在全然同样的列(即查询结果中全部列的值都一样)

    改动下tb表


    此时。运行步骤2的sql语句


    发现id为a的值总和为5而不是为10.

    这是由于假设不同的语句中取出的行,有全然同样(每一个列的值都同样),那么同样的行将会合并(去重)

    处理方案: 用union all

     

     

    二、连接查询

    通常情况下表与表之间是没有什么关系的。可是我们能够通过一个字段,让表与表发生关系。

    把表看成集合。

    2.1、左连接

    语法: select 列1。列2。列N from tableA left join tableB on tableA.列=tableB.列

    2.2、右连接

    语法: select 列1,列2,列N from tableA right join tableB on tableA.列=tableB.列

    2.3、内连接

    语法: select 列1,列2,列N from tableA inner join tableB on tableA.列=tableB.列

     

    2.4、左右内连接的差别

    create table boy

    ( name char(3) not null,

    flower char(5)

    )engine=myisam charset utf8;

     

    create table girl

    ( name char(3),

    flower char(5)

    )engine=myisam charset utf8;

    insert into boy values('林书豪','玫瑰'),('刘翔','桃花'),('周杰伦','茉莉花'),('犀利哥','荷花'),

    ('刘德华','狗尾巴花');

    insert into girl values('艾薇尔','玫瑰'),('居里夫人','桃花'),('芙蓉姐','茉莉花'),('凤姐','茉莉花'),('林志玲','荷花');

    案例一: 依据花,男找女


    左连接

    以左表为准。去右表找匹配数据,找不到匹配,用NULL补齐。

    总结: tableA为N ;tableB为M。则在以tableA为左表的情况下,得到的数据行数至少为N行。

    案例二: 依据花,女找男


    总结: 左连接和右连接相互转换。

    A 在 B的左边  ==》B在A的右边

    A left join B  ==》B rightjoin A

    怎样记忆:

    1、 左右连接能够相互转化

    2、 能够把右连接转换为左连接来使用(兼容其他数据版本号)

    案例三: 不管男女,查找有伴的人


    总结: 内连接inner join 查询左右连接都有的数据。即得到左右连接的交集

    思考: 是否能查出左右连接的并集呢?

    答: 眼下不能直接获取,眼下的mysql不支持外链接。

    但能够用union联合



    The quieter you become,the more you are able to hear!


  • 相关阅读:
    深入浅出js单例模式
    前端常见面试-存储/缓存篇
    JavaScript内存管理
    delete操作符
    解决window.location.href跳转无效问题解决办法
    前端程序员经常忽视的一个JavaScript面试题
    【华为云技术分享】漫谈LiteOS-端云互通组件-MQTT开发指南(上)
    【华为云技术分享】序列特征的处理方法之二:基于卷积神经网络方法
    【华为云技术分享】原来CTR预估模型的发展有这样的规律
    【华为云技术分享】在家办公怎么弄?华为云DevCloud宝典一看就懂——项目管理篇
  • 原文地址:https://www.cnblogs.com/yutingliuyl/p/7223578.html
Copyright © 2011-2022 走看看