主要问题和问题本身是:100

上下文:

我知道在MySQL中不能有两个级别深的关联子查询,但使用派生表似乎可以、is this normal or is there something I don't knowdoes this 2 level thing only and STRICTLY affect correlated subqueries

SELECT table3.field1, table3.field2, (SELECT table1.field1 FROM table1 WHERE table1.a = table3.field2) AS calculated,
        (SELECT COUNT(*) FROM (SELECT * FROM table2 WHERE table2.c = table3.field2) AS derived) AS calculated2
FROM table3;

推荐答案

MySQL对嵌套子查询级别的限制是63,与联接的表数相同.

https://github.com/mysql/mysql-server/blob/8.0/sql/sql_lex.cc#L85

static constexpr const int MAX_SELECT_NESTING{sizeof(nesting_map) * 8 - 1};

nesting_map是一种定义为uint64_t的64位整数类型.因此,sizeof(nesting_map)是8字节,MAX_SELECT_NESTING等于64-1.

如果您确实超过了嵌套子查询层数,则会收到以下错误:

错误1473(HY000):嵌套级别太高,无法 Select

Mysql相关问答推荐

是否有一种方法可以在mysql中设置一列,使其自动成为该行的行号的值?

SQL中的搜索模式

用于将重复行的唯一列值作为单独列获取的SQL查询

当日期附加到MySQL后,如何按日期说明排序?

docker-compose:无法将应用程序服务连接到 mysql 数据库,收到错误:用户‘root’@‘localhost’访问被拒绝(使用密码:YES)

按唯一列排序,但保持匹配的列在一起

MySQL如何将字符串列表与子查询进行比较

将sql查询转换为sequelize

如何查询由另一个查询创建的表?

如何使用 SQL 聚合和求和相似 Select 的值?

SQL 中的双杠 (||) 是什么意思?

在 WHERE 子句中使用 CASE

从终端访问 MAMP 的 MySQL

重新加载 .env 变量而不重新启动服务器(Laravel 5,共享主机)

如何使用 SQL 数据库中的经纬度查找最近的位置?

如何在 python 中逐行获取 MySQL ResultSet

在 MySQL 中删除数据库返回删除数据库错误:66

在 MySQL 中存储 IPv6 地址

int(11) 和 int(11) UNSIGNED 有什么区别?

MySQL在哪里存储数据库文件?