Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 错误1093(HY000):无法在FROM子句中指定更新的目标表_Mysql_Sql - Fatal编程技术网

Mysql 错误1093(HY000):无法在FROM子句中指定更新的目标表

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)

我目前正在自学mysql,我试图从我的表中删除工资最低的员工,但我一直收到这个错误,我不理解或不知道如何修复

从员工中删除 其中Salary=从Employee中选择minSalary 在MySQL中,不能修改表并在子查询中从同一个表中进行选择。这适用于DELETE、INSERT、REPLACE、UPDATE等语句,因为子查询可以在SET子句LOAD DATA中使用

尝试在查询之前设置最低工资记录,如:

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;