【发布时间】:2018-04-25 20:42:36
【问题描述】:
假设有两个表,分别称为 table1 和 table2,如下所示,
表1
id | val1
--------
1 1
2 2
3 3
4 4
5 5
表2
id | val2
----------
1 2
2 4
3 5
如何使用 oracle sql 进行验证,table2.val2 列仅包含 table1.val1 值的子集。
这个解决方案怎么样,
select * from table2 where val2 not in (select val1 from table1);
如果上述查询返回任何结果,则 val2 列不是 val1 的子集。如果不是,它是 val1 的子集。
有没有比这个解决方案更好、更短的替代方法?
【问题讨论】:
-
在 val1 和 val2 之间进行右连接并确保没有 NULL
-
具有强制参照完整性的约束?
-
假设在 val1 列中没有 val2 值。但我不确定。所以我想验证一下。