You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何PostgreSQL不支持SELECT * FROM (t)这类SQL语法?MySQL可正常执行

PostgreSQL与MySQL子查询语法差异原因分析

PostgreSQL报错的核心原因是它严格遵循SQL标准,而MySQL做了语法扩展:

  • SQL标准规定,当把括号内的内容作为派生表(即FROM子句里的子查询数据源)时,括号内必须是一个完整的SELECT查询语句。你写的(t as a)或(t)不符合这个要求,因为缺少了SELECT关键字和对应的查询逻辑,所以PostgreSQL会抛出语法错误。
  • MySQL对标准SQL做了简化扩展,允许在这种场景下直接省略SELECT语句,仅用表名(带或不带别名)作为括号内的内容,这是MySQL独有的语法兼容处理,并非通用标准。

如果要让这段SQL在PostgreSQL中正常运行,需要改成符合标准的写法:

SELECT * FROM (SELECT * FROM t) as a;

内容的提问来源于stack exchange,提问作者Bo Gao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 09:40:25