首页 > 解决方案 > 使用另一张表中的键将记录插入到一​​张表中

问题描述

我有一张桌子,上面有年份、开始和结束列,如下所示。它有好几年了。不要问我为什么有一年叫4,因为我不能告诉你。我只知道它不能从表中删除,否则 Web 应用程序将中断。

year    start       end
2019    2019-01-01  2019-12-31
4       2019-04-01  2020-03-31

我使用此查询将记录插入另一个表。

INSERT INTO table2 (id, other, medicaid, commercial, year)
SELECT id, other, 
medicaid, commercial, 
4 as year 
FROM crosstab_table

如您所见, 4 在查询中是硬编码的。如何更改此查询以插入 table1 中所有年份的记录?例如,如何使用包含年份的表将下面的两个查询转换为一个查询。

INSERT INTO table2 (id, other, medicaid, commercial, year)
SELECT id, other, 
medicaid, commercial, 
4 as year 
FROM crosstab_table;

INSERT INTO table2 (id, other, medicaid, commercial, year)
SELECT id, other, 
medicaid, commercial, 
2019 as year 
FROM crosstab_table

标签: sqlpostgresql

解决方案


演示:db<>小提琴

您可以使用CROSS JOIN

INSERT INTO table2 (id, other, medicaid, commercial, year)
SELECT 
    ct.id, ct.other, ct.medicaid, ct.commercial, 
    s.year
FROM crosstab_table ct
CROSS JOIN (
    SELECT year FROM table1
) s;

推荐阅读