sql - 如何比较不同的数据库表列并在 SQL Server 中添加?
问题描述
我有两个不同的数据库,同一列。我想通过比较表之间的数字并具有相同的数字来将图片从旧数据库复制到新数据库。
例如:
数据库名 1: StudentInformation
, 表名:Student
StudentID Image
---------------------
123 1.png
142 2.png
175 3.png
475 4.png
数据库名 2:,StudentInformation2
表名:NewStudent
StudentID Image
--------------------------
145 a14.png
196 7.png
175 5.png
875 9.png
475 12.png
这两个表有共同的 ID(ID=175 和 ID=475)
结果我想得到这张表:
StudentID Image
-----------------------
145 a14.png
196 7.png
175 3.png
875 9.png
475 4.png
我写了这个查询:
INSERT INTO NEW STUDENT
SELECT STUDENT ID
FROM STUDENT
WHERE STUDENT INFORMATION1.STUDENT ID = STUDENT INFORMATION2.STUDENTID
但它不运行。如何编写 SQL 通过比较旧表和新表的 ID 值来将图像添加到公共 ID 列?
解决方案
目前尚不清楚-
第二个样本中的值是否真的是数据中的那个字符,或者它是否只是代表NULL
. 在这个答案中,我假设后者。
首先要了解的是,不能在表名和列名中留下空格。最好不要在表名和列名中使用空格,但如果必须,至少必须将这些名称括在方括号中,即:[NEW STUDENT]
.
接下来,您已经拥有 StudentID 值 175 和 475 的数据,因此这根本不是 INSERT 命令。这将是一个UPDATE命令。
现在,假设数据库在同一台服务器上或链接服务器已经存在,并且您的连接对两个数据库都具有所需的权限,您将必须完全限定所有内容,包括架构(几乎总是dbo
)。
把所有这些放在一起,你会得到:
UPDATE n /* n = new, o = old */
SET n.Image = o.Image
FROM StudentInformation2.dbo.NewStudent n
INNER JOIN StudentInformation.dbo.Student o ON o.StudentID = n.StudentID
-- removed WHERE clause based on a comment to the question. The o
--WHERE n.Image IS NULL
推荐阅读
- java - 将 PDF 字符串/byteArray 转换/写入 pdf 文件
- rust - 如何创建一个指定超特征关联类型的特征?
- vba - ADODB Stream 设置为 Nothing 时不清除缓存
- python-3.x - 在颤振安卓应用程序中运行的 Python 脚本
- flutter - 带有循环文本字符串的颤动日历?
- javascript - 选择选项上的数字精度更改
- c# - unity Character Controller 动画问题
- java - 我想使用 spy 来模拟一个方法,但我需要得到一些虚拟数据作为回报
- android - ActionBar 下的菜单
- c# - 为数组中的每个 ID 查找 TOP (1)