SQL - 为另一列中的每个值返回一列中的所有唯一值对

时间:2016-09-09 02:53:03

标签: mysql sql

假设表格看起来像

col1 col2
---- ----
1    a
2    a
3    a
4    b
5    b
6    b

我希望从col1获取col2中每个值的所有对,意味着结果应如下所示:

col1a col1b col2
----  ----- ----
1     2     a
1     3     a
2     3     a
4     5     b
4     6     b
5     6     b

我尝试过使用

temp1 cross join temp2 where temp1.col1 < temp2.col1 order by temp1.col1, temp2.col1

作为完整查询的一部分,但它没有返回所有可能的组合。另外,我不确定如何为每个&#34;写一个&#34;命令的一部分,如在&#34;对于col2中的每个值,从col1&#34;中的值创建所有对。任何指导都将非常感谢。

1 个答案:

答案 0 :(得分:2)

也许这就是你要找的东西?

select t1.col1 as col1a, t2.col1 as col1b, t1.col2 
from t as t1
join t as t2 on t1.col2 = t2.col2
where t1.col1 < t2.col1

示例SQL Fiddle提供与您的示例相同的输出。