mysql5.7版本中,使用多重嵌套子查询,报错,找不到外部表的字段
时间: 2023-10-09 14:11:12 浏览: 69
mysql 5.7 中文文档
5星 · 资源好评率100%
在 MySQL 5.7 版本中,使用多重嵌套子查询时,可能会出现找不到外部表的字段的问题。这是因为 MySQL 5.7 引入了新的 SQL 模式,导致默认情况下只允许在子查询中使用别名或者表名来引用列,而不允许在外部查询中使用。
要解决这个问题,可以通过以下两种方法之一来解决:
1. 修改 SQL 模式
可以通过修改 MySQL 的 SQL 模式来解决这个问题。具体的做法是,在 MySQL 客户端中执行以下语句:
```
SET sql_mode='STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION';
```
这个语句会将 SQL 模式设置为 STRICT_TRANS_TABLES 和 NO_ENGINE_SUBSTITUTION,从而允许在外部查询中使用子查询中的列。
2. 使用临时表
另外一种解决方法是使用临时表。具体的做法是,将子查询的结果保存到一个临时表中,然后在外部查询中引用这个临时表。示例代码如下:
```
CREATE TEMPORARY TABLE temp_table AS (SELECT ... FROM ... WHERE ...);
SELECT ... FROM ... JOIN temp_table ON ...;
```
注意,使用临时表可能会影响性能,所以应该根据具体情况选择合适的解决方法。
阅读全文