我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