【问题标题】:want to delete data from two tables using one query [closed]想使用一个查询从两个表中删除数据[关闭]
【发布时间】:2020-12-31 17:43:43
【问题描述】:

问题:

有两个名为“EMPLOYEE”和“SALARY”的表具有以下字段:

EMPLOYEE: 
ID (int), 
EmployeeCode (varchar(50)), 
Name (varchar(50)), 
City (varchar(50))

SALARY: 
EmployeeCode (varchar(50)), 
Amount(int)

删除所有来自“DELHI”的员工及其工资。 我想在一个查询中同时删除两个表。

解决方案:

DELETE Employee, Salary FROM Employee e
JOIN Salary s ON s.EmployeeCode= e.EmployeeCode
WHERE  City ='Delhi';

【问题讨论】:

    标签: mysql sql sql-server


    【解决方案1】:

    不可能同时从两个表中删除,这应该可行

    BEGIN TRAN
    
    DELETE s FROM Salary s
    JOIN Employee e ON s.EmployeeCode= e.EmployeeCode
    WHERE  e.City ='Delhi';
    
    DELETE e FROM Employee e
    WHERE  e.City ='Delhi';
    
    COMMIT TRAN
    

    【讨论】:

      【解决方案2】:
      DELETE e 
      FROM Employee e 
          JOIN Salary s ON (s.EmployeeCode= e.EmployeeCode) 
      WHERE City ='Delhi';
      
      DELETE s 
      FROM Salary s LEFT JOIN Employee e 
          ON (s.EmployeeCode= e.EmployeeCode AND e.City ='Delhi') 
      WHERE e.EmployeeCode IS NULL
      

      【讨论】:

      • 你也忘记删除工资数据了。
      • 工资数据也会删除吗?
      • 为薪金删除附加脚本
      • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
      猜你喜欢
      • 2013-05-09
      • 2010-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多