繁体   English   中英

插入组合中选择where

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM