sql - 如何使用 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 的提示或网站将不胜感激。
谢谢!
解决方案
改变这个:
ON a.Name = b.Did
对此:
ON a.Name = CAST(b.Did as varchar(10))
我怀疑您的查询在获得您想要的结果方面存在更多错误,但这应该可以解决您的错误。
推荐阅读
- java - 在 lib 中找不到工件 com.cache:mycache:jar:1.0-SNAPSHOT
- json - 如何访问此结构中的某些值
- dataframe - 如何使用 CLI 或 Databricks API 监控 Databricks 作业以获取有关所有作业的信息
- c++ - std::enable_if 过滤掉 char* 类型的参数
- arrays - 需要通过打字稿获取数组子数组的索引吗?
- sql - 每个客户的第二个最小值
- python - Mysql引用对象问题|| python中的Mysql类
- python - 从 2 个数组的交集创建一个布尔掩码
- django - 如何使用 Boto3 获取 S3 存储桶的最新文件?
- html - 如何防止 android 虚拟键盘遮挡内容?引导程序 4