zoukankan      html  css  js  c++  java
  • sql   表连接,  union

    先说简单的,union就是把两个结果集合并到一起,union有去重的功能.   union all跟union功能一样只是没有去重功能,所以效率较高(没有排序去重的过程,确定不会有重复的话用unionall好些)

    union就是把结果集简单的合在一起(union要检查重复).并到同一列里 如果俩的列都起了别名只要第一个的.
    select da.id 一 from j_yhda da where da.yhmc like '范%'
    union
    select qf.id 二 from s_qf qf where qf.yhid like '3%'
    就是简单的合在一起 第二个select的二不要了
    union 检查重复,union all不检查重复(很简单的合在一起).


    表连接.

    最简单的连接:直接做笛卡尔积

    ,from t1,t2   不带where .结果集是行数是t1 的行*t2的行, 列数是,t1的列+t2的列 (左边的每一行和右边的所有行连接)

    连接 :自己跟自己连接

    select * from test t1 join test t2 on t1.a = t2.b   (就是内连接的一个特例)

    内连接(join 或 innerjoin , join == innerjoin):

    Select * From a Inner Join b On a.id=b.id     //这是不是该叫笛卡尔积的子集?

    满足条件的a的行和满足条件的b的行连接  (笛卡尔积是无条件的)

        等价于:select * from from a,b where a.id=b.id

    外连接(leftjoin 或 rightjoin  ,  leftjoin == left outer join ,同)

    select da.yhmc , qf.qfje from j_yhda da left join s_qf qf
    on da.id = qf.yhid //查出来所有用户,只有张的qfje有值.别人的都没值 这就是外连接.左边的都要,再要符合条件的右边的. (得到的行数为第一个表的行数) (X 错)
    等价于
    select da.yhmc , qf.qfje from s_qf qf right join j_yhda da
    on da.id = qf.yhid

     就是满足一边的和另一边的所有的  (leftjoin是左边的所有 和右边的满足条件的 右边没满足的就是一个空值)

    全连接(full join , fulljoin == full out join)

    就是LEFT JOIN和RIGHT JOIN和合并,左右两表的数据都全部显示。

    如下这四条记录.
    Carter 77895
    Carter 44678
    Bush
              34764 
    如果是left join 的话,有1,2,3记录
    如果是right join 的话,有1 2 4记录.
    full join就是 1 2 3 4都有


    join是连接查询,子查询通常更好,子查询下一篇说

  • 相关阅读:
    剑指OFFER之复杂链表的复制(九度OJ1524)
    剑指OFFER之二叉树中和为某一值的路径(九度OJ1368)
    剑指OFFER之从二叉搜索树的后序遍历序列(九度OJ1367)
    剑指OFFER之从上往下打印二叉树(九度OJ1523)
    剑指OFFER之栈的压入、弹出序列(九度OJ1366)
    剑指OFFER之包含min函数的栈(九度OJ1522)
    剑指OFFER之顺时针打印矩阵(九度OJ1391)
    剑指OFFER之树的子结构(九度OJ1520)
    剑指OFFER之二叉树的镜像(九度OJ1521)
    VM安装CentOs7虚拟机后无法上网之解决方法
  • 原文地址:https://www.cnblogs.com/wangduqiang/p/4180932.html
Copyright © 2011-2022 走看看