我tbl1
試圖從有兩個表插入選擇一對多關係
IDa | year | field2 |
----+------+---------
1 | 2015 | bbb |
2 | 2015 | aaa |
3 | 2015 | ccc |
---------------------
我使用INSERT INTO SELECT
將所有的數據從2015年複製,但變化year
到2016
INSERT INTO tbl1 (year, field2) SELECT '2016', field2 from tbl1 WHERE year = '2015'
,並返回這樣
IDa | year | field2 |
----+------+---------
1 | 2015 | bbb |
2 | 2015 | aaa |
3 | 2015 | ccc |
4 | 2016 | bbb |
5 | 2016 | aaa |
6 | 2016 | ccc |
---------------------
現在的數據,我有另一個表tbl2
那些在tbl1
的外鍵IDa
,其關係是一對多這樣
IDb | year | IDa | field3 |
----+------+-----+---------
1 | 2015 | 1 | ddd |
2 | 2015 | 1 | eee |
3 | 2015 | 2 | fff |
4 | 2015 | 3 | ggg |
5 | 2015 | 3 | hhh |
6 | 2015 | 3 | iii |
---------------------------
而現在,INSERT INTO SELECT
我也想將數據從tbl2
在year
2015年將其複製並更改爲2016年,但在
我已經試過這
INSERT INTO tbl2 (year, IDa, field3)
SELECT year, (SELECT IDa FROM tbl1 WHERE year = '2016'), field3
FROM tbl2
WHERE year = '2015'
但此查詢GE因爲一個字段在當時返回多個值。
那麼,如何爲此做出正確的查詢呢?我想要的結果是這樣的
IDb | year | IDa | field3 |
----+------+-----+---------
1 | 2015 | 1 | ddd |
2 | 2015 | 1 | eee |
3 | 2015 | 2 | fff |
4 | 2015 | 3 | ggg |
5 | 2015 | 3 | hhh |
6 | 2015 | 3 | iii |
7 | 2016 | 4 | ddd |
8 | 2016 | 4 | eee |
9 | 2016 | 5 | fff |
10 | 2016 | 6 | ggg |
11 | 2016 | 6 | hhh |
12 | 2016 | 6 | iii |
---------------------------
這可能嗎?
我很感激所有的答案,謝謝你的幫助。
你存儲年份爲人品? – jarlh
使用tbl1中的臨時列來存儲原始主鍵。否則,您在複製數據時會丟失該信息。 –
@jarlh不,其int int – JTR