我有两个表 A 和 B,结构完全相同。我需要验证 A 是 B 的子集。因为结构包含 100 多个字段,我不想在 where 谓词中一一列出它们。
我想知道是否有更简单的方法来做到这一点
假设:
(1)A和 的表结构相同B。这意味着列的顺序及其数据类型都必须匹配。
(2)表中没有重复的行A
问题描述
为了证明A is a subset of B你需要证明这一点A\B = empty set。
解决方案
这意味着,如果您删除A其中具有匹配行的每一行B并且您的输出为空(0 行),则这意味着A is subset of B.
另一方面,如果在输出中你得到> 0行,这意味着A有B没有的行和A isn't a subset of B.
SELECT * FROM A
EXCEPT
SELECT * FROM B
Run Code Online (Sandbox Code Playgroud)
当A为空(包含 0 行)时,它将被视为 的子集B,因为上述查询的结果将为 0 行。