我在[表1]中有一个[日期]列,[表2]中有一列[操作]
[表1]看起来像:
Date
----
2018-01-01
2018-01-02
...
2018-02-28
2018-03-01
...
2018-12-31
[表2]看起来像:
Actions
-------
Action1
Action2
Action3
...
我想创建一个[Table3]看起来像这样:
Date | Actions
--------------------
2018-01-01 | Action1
2018-01-02 | Action1
...
2018-02-28 | Action1
2018-03-01 | Action1
...
2018-12-31 | Action1
2018-01-01 | Action2
2018-01-02 | Action2
...
2018-02-28 | Action2
2018-03-01 | Action2
...
2018-12-31 | Action2
2018-01-01 | Action3
2018-01-02 | Action3
...
2018-02-28 | Action3
2018-03-01 | Action3
...
2018-12-31 | Action3
...
换句话说,在所有日期中分配所有动作。是否有SQL命令来做到这一点?谢谢。
你似乎想要一个笛卡尔积。在SQL中,您使用CROSS JOIN
执行此操作:
select t1.date, t2.action
from t1 cross join
t2
order by t2.action, t1.date;
如何将其保存到表中取决于您使用的数据库。通常它可能是create table table3 as select . . .
或select . . . into table3 from . . .
。
下面的查询也会给出笛卡尔积产品
SELECT * FROM table1,table2