首页 > 解决方案 > 如何使用 Microsoft SQL Server Management Studio 执行 INSERT、SELECT、JOIN 和 CAST 查询?

问题描述

我一直在尝试建立一个测试数据库,但我一直遇到从其规范化形式中提取数据的问题。

下面是我一直在处理的最新版本的 SQL 查询。

INSERT INTO TestData.dbo.Info (Name,Did)
SELECT DISTINCT a.Name, b.Did
FROM StageDB.dbo.MockData a INNER JOIN Testdata.dbo.Dinfo b
ON a.Name = CAST(b.Did as varchar(10))

我得到的输出如下:

(0 行受影响)

我一直在尝试自己玩弄它,但似乎无法让它按照我想要的方式工作。

我的目标是提取数据(我的数据库中已有数据的表中的主键,Did 来自 int 类型的 TestData.dbo.Dinfo)并将其与我的暂存表中的数据(表中的特定列)合并在暂存数据库 StageDB.dbo.MockData,类型为 varchar(10)) 的名称中,然后插入到我的主数据库上的新表中。我试图将这些东西放入的数据库表都设置了正确的字段和类型(主键列,添加行时自动生成,名称列是 varchar(10),Did 列是 int) .

编辑:表定义、样本数据、期望结果

目的地表:

测试数据.dbo.Info

列:Iid(int,表的主键设置为在添加新记录时自动递增)、Name (varchar(10))、Did(int,来自 TestData.dbo.Dinfo 的外键)。

StageDB.dbo.MockData

列:此表中存在许多与我想要完成的内容无关的列。我唯一感兴趣的是包含我想与 Dinfo 表中的信息联系在一起的名称的列。名称 (nvarchar(255),null)。

测试数据.dbo.Dinfo

列:Did (int, primary key)、Donor (varchar(20))。

数据样本

来自 Dinfo:

Did        Donor 
01         Howard L

来自模拟数据:

Name
Smith J

期望的结果

Iid      Name      Did
01       Smith J   01

任何帮助或建议将不胜感激。如果有人可以向我展示正确的 SQL 语法,我真的很高兴,因为我认为这可能只是正确编写它的问题。此外,任何可以帮助我了解更多 SQL 的提示或网站将不胜感激。

谢谢!

标签: sqlsql-serverjoinsubquerysql-insert

解决方案


改变这个:

ON a.Name = b.Did

对此:

ON a.Name = CAST(b.Did as varchar(10))

我怀疑您的查询在获得您想要的结果方面存在更多错误,但这应该可以解决您的错误。


推荐阅读