Sql 从另一个表获取数据,然后插入(如果存在)或更新
例如,我有一个名为 应用程序带列Sql 从另一个表获取数据,然后插入(如果存在)或更新,sql,sql-server,ssms,Sql,Sql Server,Ssms,例如,我有一个名为 应用程序带列 +---------------+------+-------+--------+-------+-------+ | ApplicationID | Name | Phone | DeptID | EmpNo | Email | +---------------+------+-------+--------+-------+-------+ | | | | | | |
+---------------+------+-------+--------+-------+-------+
| ApplicationID | Name | Phone | DeptID | EmpNo | Email |
+---------------+------+-------+--------+-------+-------+
| | | | | | |
+-------+------+-------+--------+
| EmpNo | Name | Phone | DeptID |
+-------+------+-------+--------+
| | | | |
员工带列
+---------------+------+-------+--------+-------+-------+
| ApplicationID | Name | Phone | DeptID | EmpNo | Email |
+---------------+------+-------+--------+-------+-------+
| | | | | | |
+-------+------+-------+--------+
| EmpNo | Name | Phone | DeptID |
+-------+------+-------+--------+
| | | | |
EmpNo是int和惟一的
当新员工申请时,他们将被插入到申请表中,如果获得批准,他们将获得一个员工编号
当当前员工想要向新部门申请时,他们还需要插入到申请表中并进行处理
每个月我都需要处理此表中的数据,并插入/更新另一个名为employee的表
INSERT INTO [Employee]
(
[EmpNo]
,[Name]
,[Phone]
,[DeptID]
)
SELECT [EmpNo]
,[Name]
,[Phone]
,[DeptID]
FROM [applications]
如何仅在应用程序表中存在EmpNo时更新?请查看该语句。在检查行是否存在时,可以使用一个非常简单的运算符,奇怪的是,它被称为
EXISTS
。不过,您必须提供以下说明:如果同一个EmpNo在应用程序表中存在多次,该怎么办?EmpNo在Employee表中是唯一的。当EMpNo在应用程序表中多次存在时,我们会得到最新的一个(表中较低的行),EMpNo应该是employee中的主键。应用程序的主键应该是应用程序id,外键应该是empno。一个emp可以使用许多应用程序,因此这是唯一可行的方法。应用程序中的员工id不应该是员工id中的第一个。所以你的问题没有意义。(假设您使用的是关系数据库)