当前位置: 代码迷 >> 综合 >> mysql报错:ERROR 1248 (42000): Every derived table must have its own alias
  详细解决方案

mysql报错:ERROR 1248 (42000): Every derived table must have its own alias

热度:87   发布时间:2023-11-19 12:25:54.0

现在表和数据如下:

1.现有需求:将SMITH所在部门的员工工资提高10%。

第一次的代码:

UPDATE emp
SET sal=sal*1.1
WHERE deptno=(SELECT deptnoFROM empWHERE ename='SMITH')

2.报错如下:

ERROR 1248 (42000): Every derived table must have its own alias

意思是每个派生表都必须有自己的别名。

3.我就给它个子查询的别名。第二次的sql如下:

UPDATE emp
SET sal=sal*1.1
WHERE deptno=(SELECT e.deptnoFROM emp eWHERE e.ename='SMITH')

4.报错如图,

ERROR 1093 (HY000): You can't specify target table 'emp' for update in FROM clause

意思是说不能对进行查询操作的表进行update操作,也就说我们的where条件中进行了子查询,并且子查询也是针对需要进行update操作的表的,mysql不支持这种查询修改的方式。

5.抱着不放弃的精神,摸索和百度,让我在子查询多加一层查询方式,不是直接获得,而是间接获得就行了。

UPDATE emp
SET sal=sal*1.1
WHERE deptno=(SELECT e.deptno FROM (SELECT deptnoFROM empWHERE ename='SMITH') e );

 

 

 

 

  相关解决方案