从另一个表获取数据,如果存在则插入,否则更新

问题描述 投票:0回答:1

例如,我有一个名为

的表

应用程序与列

+---------------+------+-------+--------+-------+-------+
| 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 时更新?

sql sql-server ssms
1个回答
0
投票
INSERT INTO [Employee] ([EmpNo], [Name], [Phone], [DeptID])
SELECT a.[EmpNo], a.[Name], a.[Phone], a.[DeptID]
FROM [Applications] a
WHERE EXISTS (
SELECT 1
FROM [Applications] b
WHERE b.[EmpNo] = a.[EmpNo]
);

我认为这个查询可以解决您的问题。

© www.soinside.com 2019 - 2024. All rights reserved.