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
  • 相关阅读:
    百度mp3地址解密码
    VB 在EXE后附加信息
    截屏函数
    Base64和StrToByte
    The Android ION memory allocator, DMABUF is mentioned as well
    DDC EDID 介绍
    Memory management for graphic processors TTM的由来
    科普 写display driver的必看 How video card works [2D的四种主要操作]
    GEM vs TTM
    DMABUF 背景介绍文章 Sharing buffers between devices
  • 原文地址:https://www.cnblogs.com/liangwei389/p/1659557.html
Copyright © 2011-2022 走看看