基于两列的组合在SQL中相乘记录

基于两列的组合在SQL中相乘记录,sql,Sql,我知道这个标题有点模糊 以下是我试图实现的目标: 我有一个表,它有两行,一行是id,一行是字符串 some_id some_string 4 'a' 7 'j' 12 'ee' 我想为这两列的所有组合创建条目,这样我就可以得到: some_id some_string 4 'a' 4 'j' 4 'ee' 7 'a' 7 'j' 7

我知道这个标题有点模糊

以下是我试图实现的目标:

我有一个表,它有两行,一行是id,一行是字符串

some_id     some_string
4           'a'
7           'j'
12          'ee'
我想为这两列的所有组合创建条目,这样我就可以得到:

some_id    some_string
4          'a'
4          'j'
4          'ee'
7          'a'
7          'j'
7          'ee'
12         'a'
12         'j'
12         'ee'

我将如何处理这个问题?我碰巧在使用Postgres,但我能理解一般说明。

这里有一种方法:

select distinct s.some_id, s2.some_string
from yourtable s, yourtable s2

只需从两个选项中选择:

SELECT t1.some_id, t2.some_string
FROM table1 t1, table2 t2

这将把
t1
中的每一个值与
t2
中的每一个值组合在一起,得到的记录总数等于两个表中记录总数的乘积。如果您想按
t1排序,您应该添加一个
orderby
子句。在您的示例中,有些id
不需要
distinct
@Ramblin'Man,不仅不需要它,而且它还会导致记录被过滤,而这不是OPexpecting@Ramblin“可是,也许,根据实际数据和预期结果,可能需要
distinct
。考虑重复的结果:这完全取决于OP的需要。试着往正确的方向推进:这个术语是笛卡尔积,或交叉连接。看:@Thomas W谢谢你指出这一点!伟大的比我做的简单多了。