我的目標是將'Book'表中的每一行(如果它具有非null的publish_date)拆分爲兩個'Book'行,原始行和新使用新的自動遞增的id,新的publish_type,no publish_date(不相關)和相同的isbn。使用PostgreSQL中插入到查詢的ID插入外部記錄
我寫了一條SQL語句來做到這一點,但訣竅是,現在我需要獲取每個新行的id,並根據每個原始書籍的Origin記錄在「Origin」表中創建新的外部記錄 - 我基本上需要複製Origin記錄,以便每個新的Book記錄都映射到Origin表中的正確(原始)country_codes。
/* Here are the tables */
Book
id | publish_date | publish_type | isbn
Origin
customer id | country_code
Country
id | country_code
/* First query to split book objects into two */
INSERT INTO Book (id, publish_date, publish_type, isbn)
SELECT NULL, 'Published', isbn
FROM Book
WHERE publish_date IS NOT NULL;
如。
/* Before */
Book
id | publish_date | publish_type | isbn
1 | 1/1/2000 | | 123
2 | | | 456
3 | 2/2/2002 | | 789
Origin
customer id | country_code
1 | US
1 | AR
2 | BR
3 | MX
Country
id | country_code
5 | US
6 | AR
7 | BR
8 | MX
/* After */
Book
id | publish_date | publish_type | isbn
1 | 1/1/2000 | | 123
2 | | | 456
3 | 2/2/2002 | | 789
4 | | Published | 123
5 | | Published | 789
Origin
customer id | country_code
1 | US
1 | AR
2 | BR
3 | MX
4 | US
4 | AR
5 | MX
Country
id | country_code
5 | US
6 | AR
7 | BR
8 | MX
好像我需要一些類型的子查詢,或從可使用先前查詢的IDS在外國血統複製語句插入選擇記錄與原始書本行的鍵相關,但我無法識別如何繼續輸入。
複製客戶和國家,因爲你修改了一本書聽起來是錯誤的。 – JGH
你說的沒錯,customer_id實際上應該是book_id。 – Tibberzz