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

使用公共表表达式(CTE)时出现1064语法错误,无CTE可正常执行

问题解决方案

可能的原因及修复方法

1. MySQL版本不支持CTE

MySQL 8.0及以上版本才支持WITH子句定义CTE(公共表表达式),如果你的MySQL版本低于8.0,执行这条语句必然会报1064语法错误。

  • 修复方法:
    • 升级MySQL到8.0及以上版本;
    • 或者把CTE改写为子查询:
      SELECT * 
      FROM (
          SELECT *
          FROM student_table_name
          WHERE student_id=6639352
          ORDER BY modified DESC
      ) AS a
      

2. CTE内部ORDER BY未搭配LIMIT(针对8.0+版本)

即使是MySQL 8.0+版本,CTE内部的ORDER BY如果没有配合LIMIT使用,数据库会认为这个排序是无意义的(因为CTE返回的结果集本身是无序的),部分场景下会触发语法或逻辑警告,甚至报错。

  • 修复方法:
    • 如果确实需要在CTE内排序,加上LIMIT(数值根据实际数据量调整):
      WITH a AS
      (
          SELECT *
          FROM student_table_name
          WHERE student_id=6639352
          ORDER BY modified DESC
          LIMIT 1000000
      )
      SELECT * FROM a
      
    • 或者把ORDER BY移到最终查询语句中:
      WITH a AS
      (
          SELECT *
          FROM student_table_name
          WHERE student_id=6639352
      )
      SELECT * FROM a
      ORDER BY modified DESC
      

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:05:38