繁体   English   中英

围绕子查询别名的括号,语法从 5.6 更改?

[英]Parentheses surrounding sub-query alias, syntax change from 5.6?

我们框架的查询构建器自动将 FROM 子句包装在括号中; 包括子查询。

以下内容用于 5.6,但在尝试升级到 8 时会引发语法错误。

SELECT t.* FROM ((SELECT * FROM table_name) t)

它在没有外括号的情况下在 8 中工作。 我在日志或 web 上找不到任何关于此更改的引用。 有谁知道这是什么时候实现的,或者它是否可以在 Mysql 中以任何方式配置?

此时尽量避免更改查询构建器或查找子查询的所有用途。 谢谢。

根据文档- 没有改变 - 看起来应该允许这样做。 文档的相关部分使用下面的星号突出显示:

 table_reference: { table_factor | joined_table } table_factor: { tbl_name [PARTITION (partition_names)] [[AS] alias] [index_hint_list] | [LATERAL] table_subquery [AS] alias [(col_list)] | **( table_references )** }

请注意,这表示表引用可以用括号括起来。 这些与用于子查询的括号是分开的。

基于此,MySQL 8.0 中似乎存在一个错误——无论是在文档中还是在代码中。 我猜想当他们在分词器中添加横向连接等新功能时,它就退出了。

知道这是一个错误并不能真正帮助您解决真正的问题。 MySQL 5.6 根据文档表现正确,即使此构造在其他数据库中不起作用。

我注意到 MariaDB 10.4 没有这个问题。 也许升级到 MariaDB 会起作用(否则它应该具有非常相似的功能)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM