小编典典

关系代数等效于SQL SQL“ OT IN”。

sql

是否存在与SQL表达式等效的关系代数NOT IN

例如,如果我有关系:

A1  |  A2
----------
x   |  y
a   |  b
y   |  x

我想删除A1在A2中的关系中的所有元组。在SQL中,我可能会查询:

SELECT
    *
FROM
    R
WHERE
    R.A1 NOT IN
        (
        SELECT
            A2
        FROM
            R
        )
/

真正令我困扰的是如何在关系代数选择运算符内进行子查询,这可能吗?:

蟽一些子查询在这里R


阅读 328

收藏
2021-04-22

共1个答案

小编典典

在关系代数中,可以使用笛卡尔乘积来实现。就像是:

的R -蚁A1,A2(蟺A11,A21(蟽A11 = A22(蚁A11,A21(R)X蚁A12,A22(R))))

  • 重命名R,fe的列从a1到a11(左手)和a12(右手)
  • 带重命名列的R的叉积
  • 选择a11等于a22的行
  • 投影出a12和a22并保持a11和a21
  • 重命名为a1和a2

这样就为您提供了匹配的行。从R中减去此值以找到不匹配的行。

2021-04-22