Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从另一个表获取数据,然后插入(如果存在)或更新_Sql_Sql Server_Ssms - Fatal编程技术网

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中的第一个。所以你的问题没有意义。(假设您使用的是关系数据库)