[英]Insert into combined with select where
假设我们有这样的查询(我的实际查询类似于此但很长)
insert into t1(id1,c1,c2)
select id1,c1,c2 from t2
where not exists(select * from t1 where t1.id1=t2.id1-1)
此查询是先选择并插入全部,还是逐个插入每个选定的项目? 这很重要,因为我正在尝试根据以前插入的记录插入记录,但它似乎不起作用。
这会运行一次select语句,然后根据它进行插入。 这种方式效率更高。
由于您已经知道要插入的内容,因此您应该能够在选择查询中处理此问题,而不是查看已插入的内容。
首先运行选择查询。 因此,它将选择与您的过滤器匹配的所有行。 之后执行插入。 使用一个操作时,没有逐行插入。
仍然如果你想做一些递归的事情,将在每次插入后检查你可以使用CTE(公用表表达式)。 http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.