我在[表1]中有一个[日期]列,在[表2]中有一个[动作]列
[Table1]看起来像:
Date
----
2018-01-01
2018-01-02
...
2018-02-28
2018-03-01
...
2018-12-31
[Table2]看起来像:
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命令可以执行此操作?谢谢。
答案 0 :(得分:3)
您似乎想要笛卡尔积。在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 . . .
。
答案 1 :(得分:0)
下面的查询还将给出笛卡尔积的输出
SELECT * FROM table1,table2