我的第一个问题。我一直在寻找答案,但我找不到......
问题出在这里:我想在一个表中插入多个记录(一种副本,但有一些差异)我将ID留空,所以自动增量将填充它,但我想更新一列(我们称之为field4
)为SELECT
中的每个结果使用不同的值。让我把它放到代码中:
INSERT INTO Table1 (field2,field3,field4)
SELECT
field2, field3,
(SELECT ID FROM Table2 WHERE field2=200)
FROM
Table1
WHERE
field4 IN (SELECT ID FROM Table2 WHERE field2=100)
这导致正确复制所有行,但field4
始终相同(Select
查询的第一行)。我希望它是查询中每行的所有值。
如果这看起来太混乱了我想做的事情:将所有行(从table1)复制到table1,其中table2中的field2 = 100;而且,对于table1上的每一个新行,field4应该等于table2中每行的ID,其中table2中的field2 = 200。
这有可能吗?
示例数据:
TABLE1
ID field2 field3 field4
------------------------------
1 1 text1 8
2 2 text2 9
3 1 text3 10
4 2 text4 11
12 1 text5 12
140 1 text1 79
141 2 text2 79
142 1 text3 79
143 2 text4 79
144 1 text5 79
TABLE2
ID field2 field3
--------------------
8 100 text1
9 100 text2
10 100 text3
11 100 text4
12 100 text5
79 200 text100
80 200 text200
81 200 text300
82 200 text400
83 200 text500
如果你注意到,我成功地复制了table1中的5个底行(它们是同一个表中5个第一行的副本),但是field4始终是相同的(79),它应该是79,80,81 ,82,83(根据表2中的查询)。
重写我的描述以便更好地理解。
我也是SQL的新手,所以,请保持温和,我会尽力解释自己。