Mysql 错误1093(HY000):无法在FROM子句中指定更新的目标表
我目前正在自学mysql,我试图从我的表中删除工资最低的员工,但我一直收到这个错误,我不理解或不知道如何修复 从员工中删除 其中Salary=从Employee中选择minSalary 在MySQL中,不能修改表并在子查询中从同一个表中进行选择。这适用于DELETE、INSERT、REPLACE、UPDATE等语句,因为子查询可以在SET子句LOAD DATA中使用 尝试在查询之前设置最低工资记录,如:Mysql 错误1093(HY000):无法在FROM子句中指定更新的目标表,mysql,sql,Mysql,Sql,我目前正在自学mysql,我试图从我的表中删除工资最低的员工,但我一直收到这个错误,我不理解或不知道如何修复 从员工中删除 其中Salary=从Employee中选择minSalary 在MySQL中,不能修改表并在子查询中从同一个表中进行选择。这适用于DELETE、INSERT、REPLACE、UPDATE等语句,因为子查询可以在SET子句LOAD DATA中使用 尝试在查询之前设置最低工资记录,如: SET @min = (SELECT MIN(Salary) FROM Employee)
SET @min = (SELECT MIN(Salary) FROM Employee);
DELETE FROM Employee WHERE Salary=@min LIMIT 1;
或者您甚至可以通过创建以下内容来避免第一个查询:
希望这能有所帮助,尝试使用“限制和顺序”
DELETE FROM Employee
ORDER BY Salary
LIMIT 1;
如果有很多员工,那么您需要使用一个变量
SET @MinSalary = (SELECT MIN(Salary) FROM Employee);
DELETE FROM Employee
Where Salary = @MinSalary;
您可以使用联接来执行此操作:
注意:我将参与者更改为雇员。考虑到你所描述的和你所得到的错误,这更有意义
这是MySQL中的一个限制。你的代码可以在其他数据库中使用。你在跟踪我吗?@MiroslavGlamuzina看起来我们在跟踪同一个sql标记我很抱歉我在问题中输入了错误,没有参与者,只有员工。已经更正。这就是你要找的吗?很抱歉我的问题打错了,没有参与者,只有员工。已经更正了。@sLio。有趣的是,与单语句解决方案相比,您更喜欢双语句解决方案。
SET @MinSalary = (SELECT MIN(Salary) FROM Employee);
DELETE FROM Employee
Where Salary = @MinSalary;
delete e
from Employee e join
(select min(salary) as min_salary from employee) ee
on e.salary = ee.min_salary;