SQLite:使用“动态”字段值复制行

时间:2015-10-29 18:40:05

标签: sql sqlite

我的第一个问题。我一直在寻找答案,但我找不到......

问题出在这里:我想在一个表中插入多个记录(一种副本,但有一些差异)我将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的新手,所以,请保持温和,我会尽力解释自己。

0 个答案:

没有答案