我有一个整数列表,我想要一个INSERT,将所有这些作为特定列添加。我的想法是我可以避免使用多个INSERT,或者我可以避免使用SQL FOR LOOP。
这是我尝试的内容:
INSERT INTO my_table
(id, number, text)
SELECT array_id, 5, 'Text'
WHERE array_id = (SELECT 9,14,19,39,58,15,1,59,40,20,17,69,12,42,22,2,57,1,8,4)
OR
WHERE array_id IN (9,14,19,39,58,15,1,59,40,20,17,69,12,42,22,2,57,1,8,4)
以及其他各种事情,
有快速的方法吗?
同一问题的B部分是添加列表组合,如下所示:
INSERT INTO my_table
(id, number, text)
SELECT array_id, array_number, array_text
WHERE array_id = (SELECT 9,14,19,39,58,15,1,59,40,20,17,69,12,42,22,2,57,1,8,4)
AND array_number = (SELECT 1,2,3)
AND array_text = (SELECT 'Text A', 'Text B')
这样就可以创建所有可能的组合。
如果存在这样的超级脚本我绝对想知道它!
编辑:
我认为我的问题类似于this here。
答案 0 :(得分:1)
我发现了一个非常有前景的解决方案:
INSERT INTO my_table
(id, number, text)
SELECT array_id, array_number, array_text
FROM (SELECT 9 AS array_id UNION
SELECT 14 UNION
SELECT 19 UNION
SELECT 39 UNION
SELECT 58 UNION
SELECT 15 UNION
SELECT 1 UNION
SELECT 59 UNION
SELECT 40 UNION
SELECT 20 UNION
SELECT 17 UNION
SELECT 69 UNION
SELECT 12 UNION
SELECT 42 UNION
SELECT 22 UNION
SELECT 2 UNION
SELECT 57 UNION
SELECT 1 UNION
SELECT 8 UNION
SELECT 4 ) xx
CROSS JOIN (SELECT 1 AS array_number
UNION SELECT 2
UNION SELECT 3
) yy
CROSS JOIN (SELECT 'Text A' AS array_text UNION
SELECT 'Text B' UNION
SELECT 'Text C') zz
有this类似的例子,我从中汲取灵感但我的包含更多的组合。我在sql小提琴上运行它似乎工作。