SQL限制的组合集

时间:2014-07-29 15:20:11

标签: mysql sql combinations restrict

我有一个包含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元组。

3 个答案:

答案 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