zoukankan      html  css  js  c++  java
  • sql——sql中的各种连接

    现有两张表

    tablea 和 tableb

       

    各种连接

    1、笛尔卡积

    SELECT * FROM TabA a,TabB b where a.id = b.id /*笛尔卡积乘积*/

    返回的结果为两表中所有满足a.id=b.id的记录。b表中id 为1的有两条记录,a表中有一条,返回的结果中可以看出,a表中又自动补齐了一条id为1的记录。

    一般的笛尔卡积SELECT * FROM TabA a,TabB 返回的数据为15条。a表中有m条记录,b表中有n条记录,则一般的笛尔卡积返回的数据为m*n条记录。记录之间的组合是随意的。

    2、inner join 

    select * FROM TabA a INNER JOIN TabB b ON a.id=b.id /*inner join*/

    inner join的返回结果和笛尔卡积是相同的。

     SELECT * FROM TabA a,TabB b where a.id = b.id /*笛尔卡积乘积*/

    select * FROM TabA a INNER JOIN TabB b ON a.id=b.id /*inner join*/

    区别:执行方式  第一条语句将表a和表b的记录组合起来,然后考察满足条件的,并返回记录。

    第二条语句是参照表a中的记录,一条一条到表b中去找符合记录的,符合则连在一起,否则转到a中下一条

    inner join 是笛尔卡积的特殊形式。一般情况下,我们选用inner join,内连接的效率要高于笛卡尔积的效率。

    3、left join

    select * FROM TabA a LEFT JOIN TabB b ON a.id=b.id /*left join*/

    返回的为a表中所有的记录,即使在b表中没有匹配到。

    4、right join

    SELECT * FROM TabA a RIGHT JOIN TabB b ON a.id=b.id /*right join*/

    返回的为b表中所有的记录,即使在a表中没有匹配到满足条件的记录。

    5、full join 

    在mysql中,不支持full join操作。我们使用

    select * from TabA a left join TabB b on a.id = b.id
    union
    select *
    from TabA a right join TabB b on a.id = b.id /*返回左右表所有的行 相当于full join mysql不支持full join*/

    full join:等于left join和right join的并集

    6、从两张表中查询出id字段相同,name字段不同的所有记录

    SELECT * FROM TabA a WHERE a.id in(SELECT id FROM TabB)
    UNION
    SELECT * FROM TabB b WHERE b.id in(SELECT id FROM TabA) ORDER BY id /*UNION 去重 UNINSTALL 不去重*/

    SELECT * FROM TabA a WHERE EXISTS (SELECT id FROM TabB b WHERE a.id=b.id)
    UNION ALL
    SELECT * FROM TabB b WHERE EXISTS (SELECT id FROM TabA a WHERE a.id=b.id)

     

    后面的语句性能比第一要好点。

  • 相关阅读:
    离散数学期中复习
    计算机组成原理实验_算术逻辑运算器的实现
    数值分析第一章插值方法
    数值分析绪论
    数值分析第三章 常微分方程的差分方法
    数值分析第二章 数值积分
    数据库删除信息后,再次加入信息ID不再从1开始的解决办法
    Codeforces Round #670 (Div. 2)(树的重心,dfs求子树大小)
    Codeforces Round #670 (Div. 2)B. Maximum Product(5个数乘积最大)
    Codeforces Round #668 (Div. 2)A->C
  • 原文地址:https://www.cnblogs.com/znn93/p/8990643.html
Copyright © 2011-2022 走看看