使用WITH子句编写SQL查询时遭遇1064语法错误,请求排查
MySQL WITH子句1064语法错误排查及解决
错误原因
- MySQL版本不兼容:WITH子句(通用表表达式CTE)仅在MySQL 5.7及以上版本支持,若你的服务器版本低于5.7,执行该语法会触发1064错误。
- 语句格式问题:部分MySQL客户端要求SQL语句必须以分号结尾,你的查询语句末尾缺失分号,可能导致解析失败。
解决方法
1. 升级MySQL版本
若当前版本低于5.7,直接升级至5.7或更高版本(推荐8.0),升级后即可正常使用WITH子句语法。
2. 改用子查询替代CTE
如果无法升级版本,可将原CTE逻辑改写为子查询,功能完全一致:
SELECT * FROM ( SELECT first_name, active FROM customer ) AS firstcte;
3. 补充语句结尾分号
若为客户端解析问题,给原语句添加结尾分号即可:
WITH firstcte (first_name,active) AS( SELECT first_name,active FROM customer) SELECT * FROM firstcte;
内容的提问来源于stack exchange,提问作者Rajitha Ramineni
相关产品推荐
相关产品推荐

