zoukankan      html  css  js  c++  java
  • 交集、并集、差集、笛卡尔积 [l转帖]

    并集:

    使用 UNION 运算符组合多个结果
    SELECT name,num FROM Table1
    UNION
    SELECT name,num FROM Table2

    注意:查询的字段个数必须相同,Table2的字段类型要跟Table1的相同.
    如果使用 UNION 运算符,那么单独的 SELECT 语句不能包含其自己的 ORDER BY 或 COMPUTE 子句。只能在最后一个SELECT 语句的后面使用一个 ORDER BY 或 COMPUTE 子句;该子句适用于最终的组合结果集。GROUP BY 和 HAVING子句只能在单独的 SELECT 语句中指定。

    只用UNION有重复记录只取一条,用UNION ALL 时取所有重复记录

    FULLl JOIN是表示并集
    SELECT * FROM Table1 FULLl JOIN Table2 ON table1.id=table2.id

    交集:

    SELECT * FROM table1 AS a JOIN table2 AS b ON a.name =b.name

    差集:

    NOT IN 表示差集
    SELECT * FROM table1 WHERE name NOT IN (SELECT name FROM table2)


    笛卡尔积:

    SELECT * FROM table1 CROSS JOIN table2
    没有 WHERE 子句的交叉联接将产生联接所涉及的表的笛卡尔积。第一个表的行数乘以第二个表的行数等于笛卡尔积结果集的大小。
    不过,如果添加一个 WHERE 子句,则交叉联接的作用将同内联接一样。
    注意:不能使用ON 关键字,只能用WHERE条件

    union 和join不一样,union这个运算子是将资料列合并,而join是将栏位合并(我前面所讲)!
    如果从栏位合并来讲,full join 算是并集,inner join 算是交集!left join 或right join不完全是差集,也包括交集的结果,具体你的语句的查询结果如何还是要看实际的语句,就如cross join,加上where就变成innerjoin,前后的结果相差甚远

    转自:http://junmail.javaeye.com/blog/117945
  • 相关阅读:
    RabbitMq使用说明
    php使用rabbitmq需安装amqp拓展协议
    新建springboot web项目pom报错
    HttpRunner Manager 接口自动化平台搭建
    数据库存储过程进行批量插入数据
    Windows系统下Robot Framework的安装
    利用Charles模拟客户端弱网环境进行弱网测试
    JMeter进行简单的接口压测
    JMeter的安装和使用
    grep, sed 和 awk 学习总结
  • 原文地址:https://www.cnblogs.com/liangwei389/p/1659557.html
Copyright © 2011-2022 走看看