【问题标题】:Insert into combined with select where插入并结合选择位置
【发布时间】:2013-02-15 15:54:17
【问题描述】:

假设我们有一个这样的查询(我的实际查询与此类似,但很长)

insert into t1(id1,c1,c2)
select id1,c1,c2 from t2 
where not exists(select * from t1 where t1.id1=t2.id1-1)

这个查询是先选择然后全部插入,还是一个一个地插入每个选定的项目? 这很重要,因为我正在尝试根据之前插入的记录插入一条记录,但它似乎不起作用。

【问题讨论】:

    标签: sql sql-server tsql sql-insert select-into


    【解决方案1】:

    首先运行 select 查询。因此它将选择与您的过滤器匹配的所有行。之后执行插入。使用一个操作时没有逐行插入。

    如果您想在每次插入后执行递归检查,您仍然可以使用 CTE(通用表表达式)。 http://msdn.microsoft.com/en-us/library/ms190766(v=sql.105).aspx

    【讨论】:

      【解决方案2】:

      这会运行一次 select 语句,然后根据该语句插入。这样效率更高。

      由于您已经知道要插入的内容,因此您应该能够在选择查询中处理此问题,而不是查看已插入的内容。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-18
        • 1970-01-01
        • 2013-01-16
        • 1970-01-01
        • 1970-01-01
        • 2018-02-16
        • 1970-01-01
        相关资源
        最近更新 更多