SQL Server 2008 查询将表数据从一个移动到另一个

Posted

技术标签:

【中文标题】SQL Server 2008 查询将表数据从一个移动到另一个【英文标题】:SQL server 2008 query move table data from one to another 【发布时间】:2017-02-13 13:18:32 【问题描述】:

我在coldfusion中有以下内容:

<cfquery name="queryInRange" datasource="Database1" >
        select STOCK
        from CAR
        WHERE (CAR_INV_DATE between '#dateStartDate#' and '#dateEndDate#')
    </cfquery>

    <cfoutput query="queryInRange">

        <cfquery name="INSStocks" datasource="Database1" > 
            if not exists (select strStockNumber from Aggregates WHERE strStockNumber='#STOCK#')
            BEGIN
                insert into Aggregates (strStockNumber)
                    VALUES('#STOCK#')
              END
        </cfquery>

    </cfoutput>

这里的想法是从一个表(供应商表)中提取现场库存,并确保它在第二个表中有记录,然后我们向其中添加一些信息。我想知道,有没有办法在 sql 中做到这一点,所以有 cf 循环?

【问题讨论】:

【参考方案1】:

是的,有一种方法可以只使用 sql。事实上,有不少。这是一个。

 insert into table2
 (field1, field2, etc)
 select value1, value2, etc
 from otherTables
 etc
 except 
 select value1, value2, etc
 from table1

【讨论】:

EXCEPT 的工作方式是否与我的查询中的 IF NOT EXISTS 相同? 阅读the documentation on Except以了解其工作原理。 对,它说“从查询返回到 EXCEPT 运算符左侧的任何不同的值,这些值也不是从正确的查询返回的。”我试图了解这与 NOT 有何不同EXISTS "指定一个子查询来测试行是否存在。" 理论上,它们做同样的事情,即只返回匹配的记录。但是,在比较值的方式上存在一些差异。您可以通过先进行搜索自己回答很多这些问题 :) 对“SQL Server EXCEPT vs NOT EXISTS”进行非常简短的搜索会出现诸如***.com/questions/1662902/… 之类的结果 可能需要一个 MERGE 语句。 msdn.microsoft.com/en-us/library/bb510625.aspx

以上是关于SQL Server 2008 查询将表数据从一个移动到另一个的主要内容,如果未能解决你的问题,请参考以下文章

使用 bcp 实用程序和 SQL Server 2008 将表导出到带有列标题(列名)的文件

SQL Server 2008 分区函数和分区表

深入浅出SQL Server 2008 分区函数和分区表

如何使用 JDBC 将表值参数(类数组参数)传递给 Microsoft SQL Server 2008 R2 中的存储过程? [复制]

从 6.5 到 >= SQL Server 2008 的 SQL 查询转换

sqlserver2008从一个表中模糊查询并分页