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 将表导出到带有列标题(列名)的文件
如何使用 JDBC 将表值参数(类数组参数)传递给 Microsoft SQL Server 2008 R2 中的存储过程? [复制]