Db2 表中两个字段的常用记录?

Db2 表中两个字段的常用记录?,db2,Db2,我有一个表,它有两个字段,比如a,B。假设a有值a1,a2。 B中a1的相应记录为1、2、3、x、y、z。 B中a2的相应记录为1、2、3、4、d、e、f 我需要在DB2中编写一个查询,这样它就可以为a(a1和a2)中的每条记录获取B中的公共记录 所以这里的输出是: A B a1 1 a1 2 a1 3 a2 1 a2 2 a2 3 有人能帮忙吗 试试以下方法: SELECT A, B FROM Table t1 WHERE (SELECT COUNT(*) FROM Tabl

我有一个表,它有两个字段,比如a,B。假设a有值a1,a2。 B中a1的相应记录为1、2、3、x、y、z。 B中a2的相应记录为1、2、3、4、d、e、f

我需要在DB2中编写一个查询,这样它就可以为a(a1和a2)中的每条记录获取B中的公共记录

所以这里的输出是:

A   B
a1  1
a1  2
a1  3
a2  1
a2  2
a2  3
有人能帮忙吗

试试以下方法:

SELECT A, B
FROM Table t1
WHERE (SELECT COUNT(*) FROM Table t2 WHERE t2.B = t1.B)
    = (SELECT COUNT(DISTINCT t3.A) FROM Table t3)
ORDER BY A, B

这可能不是100%准确,因为我无法在DB2中测试它,所以您可能需要稍微调整查询以使其工作

with t(num) as (select count(distinct A) from table) 
select t1.A, t1.B
from table t1, table t2, t
where t1.B = t2.B
group by t1.A, t1.B, num
having count(*) = num

基本上,我们的想法是将同一个表与B列连接起来,只过滤出那些与A列中元素数量完全匹配的表,这表明它是所有A值中的一个公共记录。

否,假设字段A有一个mroe值a3,而对应的B值为m、n、o。由于m,n,o与a1,a2的其他B值不匹配,记录a3不会出现。好吧,我误解了你的问题。现在我知道我想做什么了,但我需要一点澄清来给你一个正确的答案。如果a3具有相应的B值,如m、n、o、4。你想怎么处理?a3现在是否应该以值4出现在结果中,因为它与a2共享?或者它不应该出现在结果中,因为它也没有与a1共享?换句话说,B中的值是否必须由a中的所有值共享?或者在A中仅由一个以上的值共享就足够了?不,a3不应出现在结果中,因为它不与a1共享。所以要求B中的值必须由A中的所有值共享。最后一个问题。a中的值在B中是否可以重复?例如a3有4,5,4?