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

MySQL Workbench执行SQL报1064错误无法定位语法问题求助

MySQL 1064错误排查结果

错误根因

触发1064语法错误的核心原因是子查询的别名使用了单引号包裹:MySQL语法规范中,单引号仅用于标识字符串值,标识符(表别名、列别名、表名等)要么不使用引号,要么使用反引号()包裹,不能直接用单引号定义别名。 另外有可选优化点:外层查询的常量字段'Total Invoice'`建议增加别名,避免返回结果列名异常。

修正后的完整代码

use sql_invoicing;

select
  'Total Invoice' as summary_type,
  sum(invoice_total) as 'Total Sales',
  sum(payment_total) as 'Total Payment'
from
  (
    select
      i.number as 'Invoice number',
      i.client_id,
      c.name,
      i.invoice_total,
      i.payment_total as 'Total Payments',
      pm.name
    from
      invoices i
      left join clients c on i.client_id = c.client_id
      left join payments p on i.invoice_id = p.invoice_id
      left join payment_methods pm on p.payment_method = pm.payment_method_id
    where
      pm.name is not null
    order by
      client_id desc
  ) as R -- 别名去掉单引号即可,也可以写成 `R` 格式

补充说明

  • 若需要给包含空格、特殊字符的标识符命名,统一使用反引号包裹,例如as 'Total Sales'可改成as Total Sales``,单引号用于列别名虽然低版本MySQL可能兼容,但不符合标准规范,容易引发其他语法问题
  • 子查询内部的order by在没有limit的场景下无意义,外层聚合查询不会保留子查询的排序结果,可直接删除该语句减少不必要的性能消耗。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:15:02