PhpMyAdmin运行SQL报错Unknown column 'ename' in 'field list'如何解决
报错根本原因
- 该报错是因为你外层查询调用的字段,在内层子查询返回的结果集中完全不存在,和是否设置别名没有关联。
- 你定义的子查询
(SELECT sal FROM emp T) as E仅返回了sal单个字段,生成的临时表E中没有ename、deptno两个字段,外层查询自然无法读取。 - SQL的执行逻辑是优先运行内层子查询生成临时表,再基于临时表运行外层查询,不存在内层表字段穿透到外层的规则。
修复方案
方案1:保留子查询结构,补充子查询返回字段
如果你的业务逻辑确实需要嵌套子查询(比如要在子查询中做聚合、关联等额外处理),需要把外层要用到的所有字段都放在子查询的SELECT列表中:
SELECT ename, deptno FROM ( SELECT ename, deptno, sal FROM emp T ) as E WHERE deptno = 10;
方案2:移除无用子查询,直接查询原表
当前逻辑下子查询没有任何额外处理,完全可以直接简化语句,执行效率更高:
SELECT ename, deptno FROM emp WHERE deptno = 10;
内容的提问来源于stack exchange,提问作者OskanZ
相关产品推荐
相关产品推荐

