sql-server - 如何根据唯一值将视图加入表?
问题描述
如何根据唯一值将 VIEW 加入到 TABLE 中?背景信息:从 Web 浏览器下载一个 CSV 文件,其中包含客户信息,包括送货地址和订单号。订单号是我们的唯一标识符。CSV 文件将包含我们之前已导入的重复信息。我们希望防止重复项进入我们的主表。
CSV 文件很难直接导入到 SQL 中,因此需要一些 Excel 工作,通过在每个数据字段中插入双引号来准备导入。导入进入一个表 - 每个数据字段带有双引号的 dbo.staging。每次导入都会删除现有的行。
然后,它进入一个删除双引号的视图 (dbo.cleandata)。每次导入都会删除现有的行。我们现在有了干净的数据。
从视图来看,我们现在希望将每个新订单附加到主表 (dbo.main),而不是将现有订单数据添加到主表。这就是我卡住的地方。如何将视图 dbo.cleandata 中的数据写入表 dbo.main 中不存在订单号的 dbo.main?下面的查询没有给我我们想要的结果。有什么建议么?
INSERT INTO [dbo].[main] ([bill-to-name]
,[order-number]
,[ship-to-name]
,[ship-to-address1]
,[ship-to-city]
,[ship-to-state]
,[ship-to-zip])
SELECT A.[bill-to-name]
,A.[order-number]
,A.[ship-to-name]
,A.[ship-to-address1]
,A.[ship-to-city]
,A.[ship-to-state]
,A.[ship-to-zip]
FROM [$dsp].[dbo].[cleandata] as A
JOIN
[main] on [main].[order-number] = A.[order-number]
WHERE [main].[order-number] <> A.[order-number]
解决方案
INSERT INTO [dbo].[main] ([bill-to-name]
,[order-number]
,[ship-to-name]
,[ship-to-address1]
,[ship-to-city]
,[ship-to-state]
,[ship-to-zip])
SELECT A.[bill-to-name]
,A.[order-number]
,A.[ship-to-name]
,A.[ship-to-address1]
,A.[ship-to-city]
,A.[ship-to-state]
,A.[ship-to-zip]
FROM [$dsp].[dbo].[cleandata] as A
LEFT JOIN [main] on [main].[order-number] = A.[order-number]
WHERE [main].[order-number] IS NULL;
推荐阅读
- android - 用于注释模型的 Moshi 适配器
- node.js - 删除数据库和创建同名数据库问题
- java - 从 IntelliJ 中的 .iml 生成 pom.xml
- amazon-web-services - stopDBCluster (Aurora) 不是函数 aws-sdk javascript lambda
- javascript - 从使用流的包中导出流类型
- javascript - 我如何为这段代码使用for循环,所以类元素会改变?
- c++ - 用opengl随机移动小行星
- javascript - 如何在 snap 之外存储价值
- twilio - 我必须有一个 twiml 应用程序才能呼出吗?
- raspberry-pi - 在网络上看不到 Raspberry Pi 3