带有SELECT的SQLite中的动态多行INSERT

时间:2016-03-27 00:35:08

标签: sqlite

我有一个名为SSJ的静态表,它看起来像:

ID   fSSID        tSSID
1    30000002     30000005
2    30000002     30002973
3    30000003     30000001

我试图根据来自SSJ的fSSID的SELECT来插入一个单独的表tmpTable。 tmpTable具有以下结构:

id INTEGER, ssid NUM, wt NUM, prnt NUM

我使用的插件如下所示:

INSERT INTO tmpTable (ssid, wt, prnt) VALUES ((SELECT tSSID FROM SSJ WHERE fSSID=30000002), 0, 30000002)

通过这个INSERT,我希望在tmpTable中看到两个新行,因为SELECT应该从SSJ,id' s 1和2获得两个结果,但我只得到一个。这只是一个小例子,因为在实际的SSJ表中可能有很多倍的相同fSSID(或者可能只有1)。

我在这里俯瞰什么?

1 个答案:

答案 0 :(得分:0)

使用INSERT ... VALUES ...,您可以获得与VALUES子句中写入的行数完全相同的行数。用于代替表达式的子查询是scalar subquery,即只使用第一个结果。

要插入动态行数,必须使用INSERT statement

的SELECT表单
INSERT INTO tmpTable (ssid, wt, prnt)
SELECT tSSID, 0, fSSID
FROM SSJ
WHERE fSSID=30000002;