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

Navicat中Postgres查询加引号仍报语法错误怎么办

报错原因

这个语法错误和表名是否加双引号没有关联,核心问题是PostgreSQL的CTE(公用表表达式)语法规则不允许仅定义CTE而不执行后续操作。
你写的语句只完成了CTE t1 的定义,WITH子句本身不能作为独立SQL语句执行,它必须依附于后续的主查询或数据操作语句存在,无论表名引号是否正确,单独运行这段代码都会触发语法报错。

修复方案

在CTE定义的末尾补充对应的查询或数据操作语句即可,最基础的用法是直接查询CTE的结果集,修正后的示例代码:

WITH t1 AS 
(
    SELECT
        * 
    FROM
        "olympics_history" 
)
SELECT * FROM t1;
补充说明
  • 如果你的olympics_history表本身就是全小写命名,不需要额外给表名加双引号。PostgreSQL默认会将未加双引号的标识符自动转为小写处理,只有当标识符包含大写字母、特殊字符,或者和SQL关键字重名时,才需要用双引号包裹做精确匹配。
  • CTE后除了接SELECT查询,也可以对接INSERT、UPDATE、DELETE等数据操作语句,例:
WITH t1 AS 
(
    SELECT * FROM olympics_history WHERE year = 2016
)
INSERT INTO olympics_history_2016 SELECT * FROM t1;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 05:55:05