我有一个列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
.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top