我正在为我的一个表创建一个软删除,目前我正在使用两个SQL查询。 1.插入新记录 2.插入已删除的记录
我想知道在单个查询中是否有一种简单有效的方法
员工表 这是一个目标表,应反映历史记录
Name Salary DelInd
Tom 4000 n
Ben 7000 n
Sara 4800 n
Valarie 5500 n
Jaes 6500 n
Russell 8800 n
XXX 9000 y
我有一个 EmployeeStaing 表,如下所述
Name Salary
Tom 4000
Ben 7000
Sara 4800
Valarie 5500
AAA 2000
BBB 2500
要插入新记录我正在使用以下查询
insert into Employee
select staging.Name, staging.Gender,staging.Salary, staging.DepartmentID , 'n'
from
EmployeeStaging as staging
Left outer join
(
select * from Employee
where DelInd='n'
) emp
on
staging.Name = emp.Name
where
emp.Name is null
插入已删除的记录我正在使用以下查询。
insert into Employee
select emp.Name, emp.Gender,emp.Salary, emp.DepartmentID, 'y'
from
(
select * from Employee
where DelInd='n'
) emp
left outer join EmployeeStaging as staging
on
emp.Name = staging.Name
where
staging.Name is null
在此之后,我的最终表格如下所示,
Name Salary DelInd
Tom 4000 n
Ben 7000 n
Sara 4800 n
Valarie 5500 n
Jaes 6500 n
Russell 8800 n
XXX 9000 Y
AAA 2000 n
BBB 2500 n
Jaes 6500 y
Russell 8800 y