基于两列的组合在SQL中相乘记录
我知道这个标题有点模糊 以下是我试图实现的目标: 我有一个表,它有两行,一行是id,一行是字符串基于两列的组合在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
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谢谢你指出这一点!伟大的比我做的简单多了。