需严格提供表结构上下文与三要素指令,分步验证JOIN关系、过滤条件及窗口函数,确保字段别名、类型匹配和语法合规,否则SQL将因关联错误或字段缺失而失效。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

在本地没有数据库连接、无法实时验证 SQL 语句的情况下,用 CodeGeex 准确生成多表 JOIN、嵌套子查询、GROUP BY 与窗口函数混合的复杂联表查询,需要严格匹配表结构上下文、字段别名逻辑和业务语义,否则生成的 SQL 会因字段不存在或关联条件错误而直接失效。
准备可被 CodeGeex 理解的表结构上下文
打开 CodeGeex 本地 Web UI(如通过 codegeex serve 启动),新建对话窗口。在第一条消息中粘贴三段式结构描述:第一段写清数据库类型(如 MySQL 8.0);第二段用 Markdown 表格列出每张表的字段名、类型、主键/外键标记;第三段用自然语言说明业务目标,例如“统计每个部门下薪资前3的员工姓名及职级”。
不要只写“有 user 表和 dept 表”,必须写出 【user.id 是主键,user.dept_id 外键指向 dept.id】 这类约束信息——CodeGeex 不会自动推断关系,漏掉就会生成 ON 1=1 或无关联条件的错误 JOIN。
这一步操作起来很简单,直接把建表 DDL 截取关键字段后按格式重排即可。
构造精准的自然语言指令
方法一:用“角色+任务+约束”三要素指令
告诉 CodeGeex 它当前是“资深数据库工程师”,任务是“生成一条符合 ANSI SQL 标准的 SELECT 语句”,约束包括“不使用 LIMIT、必须用 ROW_NUMBER() 实现 Top-N、所有字段加表别名、禁止 SELECT *”。
方法二:用“输入→输出”示例引导
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
提供一条你手写的简单正确 SQL 作为样例,比如:SELECT u.name, d.name AS dept_name FROM user u JOIN dept d ON u.dept_id = d.id,再追加一句“请按此风格扩写:加入 salary 排序、取每个部门前2名、显示入职年份”。
方法三:分步锁定逻辑链
第一步:先让模型生成 JOIN 关系图,确认它理解表间路径(如 user→order→product→category);
第二步:单独要求写出 WHERE 过滤条件,检查时间范围、状态码等是否匹配你的业务规则;
第三步:最后合并并添加聚合与排序。分步能快速暴露理解偏差,比一次性提问更容易修正。
验证生成结果的三个必检点
拿到 CodeGeex 返回的 SQL 后,逐行核对:检查 FROM 子句中每张表是否都在上下文里定义过;确认所有 ON 条件两侧字段类型一致(比如不能用 VARCHAR 匹配 BIGINT);验证窗口函数的 PARTITION BY 字段是否属于 GROUP BY 或 SELECT 列中的非聚合字段。
特别注意别名冲突:如果两张表都有 id 字段且都用了 t1.id, t2.id 形式,但后续 WHERE 中写了 WHERE id > 100,这会导致语法错误——【必须给所有歧义字段显式加表别名,且 WHERE/HAVING 中引用时也带别名】。
用 VS Code 安装 SQL Formatter 插件一键美化缩进,肉眼扫一遍 JOIN 层级是否合理(三层以上嵌套 JOIN 建议拆成 CTE)。

















