Mysql 错误代码:1093。不能指定目标表

Mysql 错误代码:1093。不能指定目标表,mysql,Mysql,我写了这个查询 set sql_safe_updates=0; delete from t1 where id < (select avg(id) from t1); set sql_safe_updates=1; 请解决。您不能在查询的其余部分指定删除中使用的相同表。解决此问题的一种方法是使用联接: 这是MySQL中的一个限制。另一种解决方法是使用额外级别的子查询: delete from t1 where id < (select avgid from (select avg(

我写了这个查询

set sql_safe_updates=0;
delete from t1 where id < (select avg(id) from t1);
set sql_safe_updates=1;

请解决。

您不能在查询的其余部分指定删除中使用的相同表。解决此问题的一种方法是使用联接:

这是MySQL中的一个限制。另一种解决方法是使用额外级别的子查询:

delete from t1 where id < (select avgid from (select avg(id) as avgid from t1));
之所以这样做,是因为MySQL将具体化子查询。由于额外的子查询级别,编译器有点忘记了它是从表bing modified中查询的

delete t
    from t1 t join
         (select avg(id) as avgid
          from t1
         )
         on id < (select avg(id);
delete from t1 where id < (select avgid from (select avg(id) as avgid from t1));