Sql 对另一个表列中的每个值重复相同的数据
我有两个数据表:Sql 对另一个表列中的每个值重复相同的数据,sql,Sql,我有两个数据表: +---------+--------+ +---------+ |Account | Value | | Version | +---------+--------+ +---------+ | 1 | 10 | | a | +--------
+---------+--------+ +---------+
|Account | Value | | Version |
+---------+--------+ +---------+
| 1 | 10 | | a |
+---------+--------+ +---------+
| 2 | 20 | | b |
+---------+--------+ +---------+
基本上,我想做的是将列版本添加到第一个表中,并为每个版本重复数据,例如:
+---------+--------+---------+
|Account | Value | Version |
+---------+--------+---------+
| 1 | 10 | a |
+---------+--------+---------+
| 2 | 20 | a |
+---------+--------+---------+
| 1 | 10 | b |
+---------+--------+---------+
| 2 | 20 | b |
+---------+--------+---------+
不幸的是,我不能硬写版本名,因为它们经常更改,但数据本身是静态的。知道如何使用SQL吗?这听起来像是交叉连接:
这将生成两个表的笛卡尔乘积-这正是您的问题所描述的
请注意,如果其中一个表为空,则不会返回任何行。可以通过两种方式执行此操作: 首先:通过执行下面的脚本,您将获得所需的表
create table yourTableName as
(select t1.*, t2.*
from table1 t1 cross join
table2 t2
)
第二:
将列版本添加到表1中作为可空
更改表1添加列版本varchar20
将组合数据插入表1
在表1中插入帐户、值、版本
选择t1、t2*
来自表1 t1交叉连接
表2 t2
删除版本列为空的行
从表1中删除,其中版本为空
非常感谢。我完全忘记了交叉连接,一整天都在努力使更难的解决方案有效。
create table yourTableName as
(select t1.*, t2.*
from table1 t1 cross join
table2 t2
)