我有一个包含A,B,C列的表格,我希望得到{B,C}唯一的记录的所有组合。 这就是B值和C值在一组中只出现一次。
您对如何实现这一点有什么想法吗?我假设输出必须在一行中包含一个组合,这不是问题。
这里要说清楚的是一个例子:
一种可能的组合是{1,1,0},{1,2,3},而{6,1,1},{5,2,1}不是,因为C列值' 1'不是唯一的。我想得到的是这样一个输出:
1,1,0,1,2,3
6,1,1,1,2,3
IOW输出将是具有B,C值唯一的n元组。
答案 0 :(得分:1)
我想你想要一个自我加入的奇怪版本:
select t1.*, t2.*
from table t1 join
table t2
on t1.b <> t2.b and t1.c <> t2.c;
这将返回b
列具有不同值且c
列具有不同值的表格中的所有对。
答案 1 :(得分:0)
这是什么组合。它将所有记录与列表中的相同值组合成一行。
select B, C
from my_table
group by B, C
答案 2 :(得分:0)
问题有点模糊,如果你只想要B&amp;的价值观。 C使用@Linger的解决方案,如果您希望记录的所有字段都具有在该记录中发生的B,C组合,而不是其他地方,请使用
SELECT MAX(A),B,C FROM T
GROUP BY B,C
HAVING COUNT(*) = 1