代码之家  ›  专栏  ›  技术社区  ›  Esteban Araya

SQL中有集合除法吗?

  •  5
  • Esteban Araya  · 技术社区  · 16 年前

    我完全知道集合分割可以通过一系列其他操作来完成,所以我的问题是:

    SQL中是否有用于集合除法的命令?

    3 回复  |  直到 16 年前
        1
  •  5
  •   Brad Wilson    16 年前

    http://vadimtropashko.files.wordpress.com/2007/02/ch3.pdf

    第32页:

    关系除法不是一个基本的算子。它可以用投影、笛卡尔积和集差来表示。

        2
  •  3
  •   TuteC    13 年前

    Here is a nice explanation using relational algebra syntax

    给定表格 sailors , boats reserves (来自罗摩克里希南和盖尔克的“数据库管理系统”的示例)您可以通过以下查询计算预订所有船只的海员:

    SELECT name FROM sailors
    WHERE Sid NOT IN (
        -- A sailor is disqualified if by attaching a boat,
        -- we obtain a tuple <sailor, boat> that is not in reserves
        SELECT s.Sid
        FROM sailors s, boats b
        WHERE (s.Sid, b.Bid) NOT IN (
            SELECT Sid, Bid FROM reserves
        )
    );
    
    -- Alternatively:
    SELECT name FROM sailors s
    WHERE NOT EXISTS (
        -- Not reserved boats
        (SELECT bid FROM boats)
        EXCEPT
        (SELECT r.bid FROM reserves r
        WHERE r.sid = s.sid)
    );
    
        3
  •  2
  •   Community Stefan Steinegger    7 年前

    相关问题: Database Design for Tagging

    答案的相关部分是 this article