zoukankan      html  css  js  c++  java
  • Sql的各种连接用法(cross join、inner join、full join)

    1.名词解释:

        笛卡尔乘积:笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积,又称直积,表示X x Y ,第一个对象是X的成员,而第二个对象是Y的所有可能有序列的其中的一个成员。假设集合A={a,b},集合B={0,1, 2},则两个笛卡尔积为{(a,0),(a,1),(a,2), (b,0),(b,1),(b,2)}

      

    2.原址参考:http://ashui.net/archives/2013/552.html

        1> 交叉连接CROSS JOIN

        SELECT * FROM table1 CROSS JOIN table2

        如果不带WHERE条件子句,它将会返回被连接的两个表的笛卡尔积,返回结果的行数等于两个表行数的乘积;

        select * from table1 a cross join table2 b where a.id=b.id (注:cross join后加条件只能用where,不能用on)

        

        2>内连接INNER JOIN

        SELECT * FROM table1 INNER JOIN table2 

        内连接如果没有指定连接条件的话,和笛卡尔积的交叉连接结果一样,但是不同于笛卡尔积的地方是,没有笛卡尔积那么复杂要先生成行数乘积的数据表,内连接的效率要高于笛卡尔积的交叉连接。 

        SELECT * FROM table1 AS a INNER JOIN table2 AS b on a.column=b.column

        

        3>外连接OUTER JOIN

        1)左外连接LEFT [OUTER] JOIN

         SELECT * FROM table1 AS a LEFT [OUTER] JOIN ON a.column=b.column

        2)右外连接RIGHT [OUTER] JOIN

         SELECT * FROM table1 AS a RIGHT [OUTER] JOIN ON a.column=b.column

        3)全外连接full [outer] join

         显示符合条件的数据行,同时显示左右不符合条件的数据行,相应的左右两边显示NULL,即显示左连接、右连接和内连接的并集

    3.cross join用法,项目里实际运用的案例。      

         select * from
         (
            select `int0` as pv from XXX
              where hdfs_par = '20170525' and target_key='zaixinkefu_faq'
         ) t1
        cross join
        (
             select max(`int0`) as max_pv from XXX 
                 where hdfs_par between '20170519' and '20170525'
                  and target_key='zaixinkefu_faq'
         ) t2

        运行结果:pv,max_pv

  • 相关阅读:
    MBR(Master Boot Record)主引导记录分析
    K8S(06)web管理方式-dashboard
    K8S(05)核心插件-ingress(服务暴露)控制器-traefik
    K8S(04)核心插件-coredns服务
    K8S(03)核心插件-Flannel网络插件
    K8S(02)管理核心资源的三种基本方法
    K8S(01)二进制部署实践-1.15.5
    k8s(00)入门知识介绍
    用阿里云ecs部署kubernetes/K8S的坑(VIP、slb、flannel、gw模式)
    国内centos/windows10安装minikube
  • 原文地址:https://www.cnblogs.com/jianglanyy/p/6907638.html
Copyright © 2011-2022 走看看