前提
1.列是真实存在的,没有写错
2.mysql8.0.18是可以执行那句sql的
3.mysql8.0.11是执行不了的
4.子查询的嵌套层数大约在八层
问题:
1.mysql 子查询嵌套的层数是否和版本有关
2.是否和系统配置有关(因为mysql8.0.11是新安装的)
3.是否可以通过更改系统配置的方式解决这个问题
解决方案:
这个是因为服务器安装的mysql版本是 mysql8.0.11,嵌套过多会出现这个问题,将mysql版本从8.0.11升至8.0.18解决了这个问题
一个嵌套8层的sql,一定是有问题的
该写成left join的应该写为left join,这样可读性也好,效率也更高
该用高级语言循环处理的就循环处理,不要什么任务都丢给sql来做
有些子查询可以定义为视图的,应该定义为视图,然后使用视图嵌套的方式代替查询嵌套
其实sql问题已经解决了,我现在的问题主要是为什么不同的数据库,出来的结果是不一样的
看一下报未知列的在哪一层,定位一下,加上表或视图别名