题
我有一个列a,B,C的表,我想获得具有{B,C}唯一的记录的所有组合。也就是说,B值和C值在一个集合中只会出现一次。
你有什么想法如何实现这一目标吗?我假设输出必须在单行上包含一个组合,这不是问题。
要说清楚这里是一个例子:
- 1,1,0
- 6,1,1
- 1,1,2
- 3,2,0
- 5,2,1
- 1,2,3
一种可能的组合是{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元组。
解决方案
我想你想要一个奇怪的自我加入:
select t1.*, t2.*
from table t1 join
table t2
on t1.b <> t2.b and t1.c <> t2.c;
这将返回表中的所有对 b
列具有不同的值和 c
列具有不同的值。
其他提示
这是什么组。它将所有记录与组中的所有记录结合在一起,以单行。
select B, C
from my_table
group by B, C
. 问题有点模糊,如果您只想通过@linger使用B&C使用解决方案的值,如果您想要具有在该记录中发生的B,C组合的所有字段,但无处可行,请使用
SELECT MAX(A),B,C FROM T
GROUP BY B,C
HAVING COUNT(*) = 1
. 不隶属于 StackOverflow