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

使用WITH AS语法查询4列时出现1064语法错误求助

解决WITH AS语法错误(错误码1064)

你的代码有两个关键问题导致错误码1064:

  • WITH AS定义CTE后必须跟上实际查询逻辑:CTE只是临时表的定义,不能单独以分号结尾,必须在后面写查询语句调用这个临时表
  • MySQL版本兼容问题:如果你的MySQL是5.7或更早版本,本身不支持WITH AS语法,得用子查询替代

针对MySQL 8.0及以上版本的修复代码

WITH counter_table(s_date, h_id, h_name, counter) AS (
    SELECT s.submission_date, s.hacker_id, h.name, COUNT(DISTINCT s.submission_id)
    FROM submissions s
    INNER JOIN hackers h ON h.hacker_id = s.hacker_id
    GROUP BY s.submission_date, s.hacker_id, h.name
)
SELECT * FROM counter_table; -- 必须添加这行来查询CTE的数据

针对MySQL 5.7及更早版本的替代方案(用子查询)

SELECT * FROM (
    SELECT s.submission_date AS s_date, s.hacker_id AS h_id, h.name AS h_name, COUNT(DISTINCT s.submission_id) AS counter
    FROM submissions s
    INNER JOIN hackers h ON h.hacker_id = s.hacker_id
    GROUP BY s.submission_date, s.hacker_id, h.name
) AS counter_table;

额外提示:如果submission_id是表的主键或唯一值,COUNT(DISTINCT s.submission_id)可以简化为COUNT(s.submission_id)或COUNT(*),查询效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:15:49