是否有等价于 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
)
/
真正困扰我的是如何在关系代数选择运算符中进行子查询,这可能吗?:
σsome 子查询 hereR
最佳答案
在关系代数中,您可以使用 Carthesian 乘积来完成此操作。就像是:
R - ρa1,a2(πa11,a21(σA11 = A22(ρa11,a21(R) x ρa12, a22(R))))
这为您提供了匹配的行。从 R 中减去它以找到不匹配的行。
关于sql - 关系代数相当于 SQL "NOT IN",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12541731/