有一个值数组。我希望将它们每个都插入作为记录(如果尚不存在)。可以在SQL中的一条语句中完成?
传统的javascript方法:
[4,5,8] forEach(x => queryParams( 插入t1(c1)值($ 1) 不存在的地方(从t1中选择1,其中c1 = $ 1`, [X] );
理想的情况是
queryParams( “这里有些花哨的SQL”, [`{$ {join [4,5,8]}}`]] );
造成这种情况的原因很多,包括限制服务器往返和事务的成本。
您可以使用相关子查询来查找不符合条件的值:
INSERT INTO Records (X)
SELECT X
FROM unnest(ARRAY[4,5,8]) T (X)
WHERE NOT EXISTS (SELECT * FROM Records WHERE X = T.X);
SQL小提琴:http ://sqlfiddle.com/#!15/e0334/29/0
上面编辑使用 unnest
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句