[英]SQL - INSERT SELECT two columns without duplicates
I am trying to do two subqueries to populate my table with two columns.我正在尝试做两个子查询来用两列填充我的表。
wk_start
and wk_end
. wk_start
和wk_end
。 Goal is to populate it with a specific range of date
.目标是用特定范围的
date
填充它。
I've tried cross join but still having duplicates the same as this one我试过交叉连接,但仍然有与这个相同的重复项
Here is my code这是我的代码
insert into bfs_dw.mpt_calendar (wk_start, wk_end)
select
ter.wk_start,
ter1.wk_end
from
(select * from
(select ADDDATE('2022-01-03', 7*(t4*10000 + t3*1000 + t2*100 + t1*10 + t0)) wk_start from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where wk_start < '2024-01-03'
order by wk_start ) ter
inner JOIN
(select * from
(select ADDDATE('2022-01-09', 7*(t4*10000 + t3*1000 + t2*100 + t1*10 + t0)) wk_end from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where wk_end < '2024-01-03'
order by wk_end ) ter1 ON 1 = 1
Output display below.输出显示如下。 which has a lot of duplicates after the insert.
插入后有很多重复项。
What I am trying to do is this expected result, which has no duplicates once inserted:我想要做的是这个预期的结果,一旦插入就没有重复:
Note: the two subqueries works well.注意:这两个子查询运行良好。 Its output was the last image posted here.
它的输出是这里发布的最后一张图片。
Use the first subquery to get wk_start
, and add 6 days to get the wk_end
使用第一
wk_start
查询得到wk_start
,加上 6 天得到wk_end
insert into bfs_dw.mpt_calendar (wk_start, wk_end)
select wk_start, wk_start + INTERVAL 6 DAY wk_end from
(select ADDDATE('2022-01-03', 7*(t4*10000 + t3*1000 + t2*100 + t1*10 + t0)) wk_start from
(select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
(select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
(select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
(select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
(select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where wk_start < '2024-01-03'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.