我有一个名为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)。
我在这里俯瞰什么?
答案 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;