我正在創建一個 postgresql 腳本,該腳本基于另一個更新一個產品表。第一個表,我們稱之為 T1 包含產品代碼和一些描述性資訊。產品代碼是這張表的關鍵:
| 產品代碼 | 價值觀 |
|---|---|
| abc123 | 34 |
| abd124 | 42 |
第二個表包含產品,以及顯示這些產品可用性的日期。
| 產品代碼 | 開始日期 | 結束日期 |
|---|---|---|
| abc123 | 1/1/2020 | 2/3/2021 |
| abd124 | 12/1/2019 | 12/31/2021 |
| xyz345 | 03/01/2019 | 空值 |
然后我使用 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 的正確值。
| 產品代碼 | 價值觀 | 開始 | 結尾 |
|---|---|---|---|
| abc123 | 34 | 03/01/2019 | 空值 |
| abd124 | 42 | 03/01/2019 | 空值 |
我真的不知道是什么原因造成的。我知道插入的值來自 T2 中的某個地方。但是,我看不出所有這些值都應該相同的任何合乎邏輯的原因。
uj5u.com熱心網友回復:
您不需要T1在您的FROM子句中加入表。你可以試試這個:
UPDATE T1 AS a
SET
begin_date = b.begin_date,
end_date = b.end_date
FROM T2 AS b
WHERE b.product_code = a.product_code;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/383304.html
標籤:sql PostgreSQL的
