用AI快速解决SQL报错问题1064

内容分享3小时前发布
0 1 0
全能 AI 聚合平台 免费

一站式接入主流 AI 大模型,支持对话 · 生图 · 生视频,即开即用

ChatGPT Claude Gemini Grok DeepSeek 通义千问 Ollama
AI对话 AI生图 AI视频
免费使用 →

前面用SQL改了个SQL语句,结果运行报错,

于是继续将报错信息丢给他:

01 运行上面的SQL报错:

1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(ORDER BY c_WhsDesc ASC) AS rowNumber,

c_WhsDesc,

c_PalletType

FROM (' at line 2

用AI快速解决SQL报错问题1064

02 报错缘由 + 完美修复版 MySQL SQL

这个错误 1064 超级明确:

你的 MySQL 版本太低(≤5.6),不支持窗口函数 ROW_NUMBER () OVER (),所以直接报错。

我目前给你 完全兼容 MySQL 5.1/5.5/5.6 所有老版本 的正确写法,直接复制就能运行

最终可运行 MySQL 语句(无窗口函数,100% 兼容)

-- MySQL 5.x 通用版:去重 + 排序 + 生成连续行号
SELECT
@rowNumber := @rowNumber + 1 AS rowNumber,
t.c_WhsDesc,
t.c_PalletType
FROM (
-- 先做去重 + 排序
SELECT DISTINCT
c_WhsDesc,
c_PalletType
FROM AA_RawMaterialM
ORDER BY c_WhsDesc ASC
) t, (SELECT @rowNumber := 0) r;

用AI快速解决SQL报错问题1064

03 为什么会报错?

①你的 MySQL 不支持窗口函数

ROW_NUMBER() OVER(…) 是 MySQL 8.0+ 才支持的语法

低于 8.0 版本一律报错 1064

②老版本 MySQL 必须用变量 @rowNumber 生成行号

这是唯一兼容方案。

04 语句说明(和原功能完全一致)

①内层 SELECT DISTINCT:先去重,保证没有重复行

②变量 @rowNumber:从 0 开始,每行 +1,生成连续行号

③最终结果:连续行号 + 去重后字段 + 按 c_WhsDesc 排序

用AI快速解决SQL报错问题1064

05 总结

✅ 修复 1064 语法错误

✅ 支持 MySQL 5.1 / 5.5 / 5.6 / 5.7 所有老版本

✅ 功能和你原来的 SQL 完全一样(去重 + 排序 + 行号)

✅ 直接复制运行即可

需要我再帮你把它还原成 PG 版本,或者做其他调整吗?

不用了,退下吧!!

© 版权声明

相关文章

1 条评论

none
暂无评论...