检查表中的记录组合

时间:2009-08-27 03:03:07

标签: sql oracle h2

我有两个值数组,如X,Y,Z和1,2 有一个表A有两列。我想在表A中验证所有组合的记录是否存在而不管重复。 e.g。

X 1

Y 1

Z 1

X 2

Y 2

Z 2

提前致谢!

2 个答案:

答案 0 :(得分:2)

无论价值如何,以下都应该有效:

select col1, col2
from (select distinct col1 from combtest), (select distinct col2 from combtest)
minus
select col1, col2
from combtest

首先获得可能的组合然后减去实际组合。

答案 1 :(得分:1)

这适用于任何数据集,并且不会假设您知道表中的值。

查询返回缺少的所有行。您可以轻松地将其转换为插入语句以填充表格。

SELECT *
FROM
(select * from (SELECT DISTINCT col1 FROM table1) CROSS JOIN (SELECT DISTINCT col2 FROM table1)) AS t1
LEFT OUTER JOIN table1 ON t1.col1 = table1.col1 AND t1.col2 = table1.col2
WHERE
table1.col1 is null