zoukankan      html  css  js  c++  java
  • MySQL联结查询

    SQL中,联结主要分为6种类型:

    1.内联结

    将两张表的公共的数据显示出来,即显示两张表的交集:

    SELECT <list> FROM A INNER JOIN B ON A.key = B.key;

    2.左外联结

    将两张表中,只存在于左表中而不存在于右表中的数据筛选出来:

    SELECT <list> FROM A LEFT JOIN B ON A.key = B.key WHERE B.key IS NULL;

    如果不加后面的where子句,会将两张表的共同部分也显示出来。

    3.右外联结

    将两张表中,只存在于右表中而不存在于左表中的数据筛选出来:

    SELECT <list> FROM A RIGHT JOIN B ON A.key = B.key WHERE A.key IS NULL;

    如果不加后面的where子句,会将两张表的共同部分也显示出来。

    4.全联结

    将两张表中所有记录都显示出来,即获取两张表的并集。但是MySQL中并不支持全联结操作,需要人为将左外联结和右外联结合并:

    SELECT <list> FROM A LEFT JOIN B ON A.key = B.key
    UNION ALL
    SELECT <list> FROM A RIGHT JOIN B ON A.key = B.key; 这里union all允许重复数据的存在,如果需要去重则使用union

    5.交叉联结

    又称笛卡尔积联结,返回左表乘以右表的所有条目:

    SELECT <list> FROM A CROSS JOIN B;

    6.自联结

    对同一张表进行联结操作:

    SELECT p1.id, p1.name FROM products AS p1, products AS p2 WHERE p1.vend_id = p2.vend_id AND p2.id = 10;
  • 相关阅读:
    第二次编程作业总结
    structs get 方法乱码问题
    网址记录
    尸体解剖报告
    最后冲刺
    回答自己的提问——对自己最大的反馈
    构建之法13-17章读后感
    典型场景
    对其他各团队的评价
    用户调研
  • 原文地址:https://www.cnblogs.com/00986014w/p/8465083.html
Copyright © 2011-2022 走看看