在单个查询中处理软删除

时间:2018-02-28 06:06:19

标签: mysql sql

我正在为我的一个表创建一个软删除,目前我正在使用两个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

0 个答案:

没有答案