【发布时间】:2022-01-18 23:53:10
【问题描述】:
我正在创建一个基于另一个产品表更新一个产品表的 postgresql 脚本。 第一个表,我们将调用 T1 包含产品代码和一些描述性信息。产品代码是此表的键:
| product_code | values |
|---|---|
| abc123 | 34 |
| abd124 | 42 |
第二张表包含产品,以及显示这些产品可用性的日期。
| product_code | begin_date | end_date |
|---|---|---|
| abc123 | 1/1/2020 | 2/3/2021 |
| abd124 | 12/1/2019 | 12/31/2021 |
| xyz345 | 03/01/2019 | NULL |
然后我使用 ALTER TABLE 将 begin 和 end_date 列添加到第一个表。 然后我使用了更新语句:
UPDATE T1
SET
begin_date = b.begin_date,
end_date = b.end_date
FROM T2 b JOIN T1 a ON a.product_code = b.product_code;
这给出了不正确的结果。对我来说,似乎填充了一对值,而不是 T2 中的正确值。
| product_code | values | begin | end |
|---|---|---|---|
| abc123 | 34 | 03/01/2019 | NULL |
| abd124 | 42 | 03/01/2019 | NULL |
我真的不知道是什么原因造成的。我知道插入的值来自 T2 中的某个地方。但是,我看不出所有这些值都应该相同的任何合乎逻辑的原因。
【问题讨论】:
-
为什么要将相同的日期存储在两个不同的地方?你打算放弃 t2 表吗?
-
我想删除/标记非活动的任何过去有结束日期的东西。我们还会收到这些表格的季度更新,所以如果日期发生变化,我想更新一下。
标签: sql postgresql