gammasql提示词需四步优化:一用【mysql 8.0.33,orders表,order_id为主键】锁死上下文;二用“对xx执行yy”绑定对象并精确字段名;三删除软性词、写明参数与禁止操作;四强制返回无缩进、大写关键词、带业务注释的可执行sql。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

GammaSQL提示词容易被误解,是因为模型默认将模糊动词、缺省主语、未限定环境的描述自动补全为通用逻辑——而你真正要执行的SQL,只跑在MySQL 8.0的订单库上,且不能碰主键字段。
第一步:用三要素锁死执行上下文
在提示词最开头,必须写明【数据库类型】+【表名】+【字段约束】,缺一不可。例如:“MySQL 8.0,orders表,order_id为主键,status为TINYINT(1),禁止修改主键结构”。
这一步不写,Gamma会把“更新状态”理解成UPDATE status SET value=1 WHERE id=xxx,而你实际要用的是UPDATE orders SET status=1 WHERE order_id=12345——它默认忽略你没说的表名和主键名,直接造出语法合法但执行报错的SQL。
【数据库类型必须精确到小版本号】,比如写“MySQL”不如写“MySQL 8.0.33”,因为该版本才支持JSON_CONTAINS函数;写“PostgreSQL”不如写“PostgreSQL 14”,否则Gamma可能推荐pg_trgm扩展,而你的生产环境是12.6。
第二步:动词必须绑定操作对象
方法一:用“对XX执行YY”句式替代模糊动词
✘ “筛选异常订单” → Gamma生成WHERE status NOT IN (0,1,2)
✔ “对orders表执行筛选:WHERE status 9” → Gamma输出精准WHERE条件,且自动加表别名o。
方法二:在动词后紧跟字段名和取值范围
“统计近7天支付金额总和”易被误解为SUM(total_amount),但如果你的字段其实是pay_amount_cents(单位为分),就必须写成“统计orders表中pay_amount_cents字段在2026-06-09至2026-06-16的SUM值,结果除以100转元”。
【字段名必须与真实表结构完全一致】,大小写、下划线、缩写都不能差——Gamma不校验字段是否存在,你写错一个字母,它就照着错的生成SQL。
第三步:禁用所有软性指令词
第一步:删除提示词中所有“请”“建议”“可以”“尽量”“可能”字眼。这些词会让Gamma切换成解释模式而非执行模式。
第二步:把“查一下用户最近下单时间”改成“SELECT MAX(created_at) FROM orders WHERE user_id = ?”。
第三步:所有WHERE条件必须带具体值或参数占位符,禁止出现“某用户”“相关数据”“部分记录”这类指代。Gamma看到模糊指代,会自行补全为SELECT * FROM users LIMIT 10,而不是你想要的带WHERE的精确查询。
第四步:明确写出不允许的操作。例如:“禁止使用子查询;禁止JOIN user_info表;禁止SELECT *;必须用ORDER BY created_at DESC LIMIT 20”。
第四步:强制返回可验证结构
在提示词末尾加一句:“输出严格按以下格式:① SQL语句单独成段,包裹在标签中;② 每个WHERE条件后标注业务依据,如‘status=3(对应已发货状态)’;③ 若涉及计算,注明单位与精度,如‘SUM(pay_amount_cents)/100.0 AS total_yuan(保留两位小数)’。”
这一步让Gamma放弃自由发挥,转为填空式输出。没有该指令时,它常把注释写成自然语言段落,导致你复制SQL时一并粘进注释,执行报错。
【SQL语句必须可直接粘贴进DataGrip执行】,不能含中文括号、全角空格、换行符。Gamma默认输出带缩进的美化格式,需额外加一句“禁用缩进,所有关键词大写,字段名小写,一行写完”。











