如何在SQL中合并2列与所有可能的组合?

时间:2015-03-26 11:06:41

标签: sql merge combinations ansi-sql

这个问题听起来很混乱,但看看:

这样我们就可以获得第一列( col1 ):

select distinct maker
from product

第二列( col2 ):

select distinct type,maker
from product

所以现在我需要从col1和col2获得所有可能的组合。有什么建议吗?

很快,这个:

A f1

B f2

应该成为这个:

A f1

A f2

B f1

B f2

P.S。此查询不会返回我需要的内容。

select distinct A.maker, B.type
from product as A

2 个答案:

答案 0 :(得分:6)

使用cross join获取所有组合:

select m.maker, t.type
from (select distinct maker from product) m cross join
     (select distinct type from product) t;

这是ANSI SQL语法,应该在任何数据库中都受支持。

答案 1 :(得分:1)

使用cross join但没有子查询的变体会得到与@Gordon Linoff帖子相同的结果,因此您将获得所有可能的组合

select distinct A.maker, B.type
from product as A cross join product as B