要从数据库捞个数,却记不住 SQL 怎么写——这是很多运营、产品、初阶分析师的日常。用 ChatGPT,你把"我要看上个月每个地区的销售额"这句话丢给它,它出一段能直接跑的 SQL。对不常写查询的人,等于随时有个会 SQL 的同事。
准备清单
你需要:一个 ChatGPT 账号;你的表结构(表名、字段名、类型,贴出来最稳);想清楚"要什么口径"——是求和、还是按天、要不要去重。把表结构给它,它才不出"幻想字段"。
操作步骤
第一步,给表结构。先把"我有表 orders(字段: id, region, amount, created_at)"这类贴给它。小柯第一次没给结构,它编出 region_name 这种不存在的字段,跑就报错;补上真实结构后才准。
第二步,说人话需求。描述要什么:"按地区汇总上月销售额,金额降序"。越具体,出的越对。常见失败:说"最近的数据"它猜时间范围,写成"近 30 天"还是"上月"得你定。
第三步,拿语句、跑、验。它出 SQL,你贴进数据库跑;结果不对就把它报错或异常行贴回去让它改。验收:返回的行数和字段正是你要的,不是"看着像"。
第四步,存成模板。常用查询让它加注释、存起来,下次改个数字复用。验收:改条件即可重跑,不重写得。
可直接复制的提示词
基于下表结构生成 SQL:表 orders( id INT, region VARCHAR, amount DECIMAL, created_at DATETIME )。需求:统计 2026-09 每个 region 的销售总额,按总额降序,字段名为 region 和 total。要求:只用已给字段,MySQL 语法,加必要注释,不要 SELECT *。
碰到多表关联也别慌,把表结构一次给全,让它写 JOIN。小柯有次要"每个地区销售额 + 该地区订单数",两张表 orders 和 regions,他把两张表字段都贴出,模型出了带 LEFT JOIN 的语句,一次跑通。关键是说清"用什么字段关联"——你不说 region 在两个表里都叫 region,它可能猜错连接键。把关联键点明,复杂查询也能一句话搞定。
一个必须提醒的坑:别让它碰生产库做"改删"操作,只让它出查询,执行前你过一眼;涉及敏感字段(手机号、身份证)别贴进对话。进阶玩法:让它把复杂需求拆成"先子查询再汇总"并解释每步,你顺便学 SQL;同一口径让它出 MySQL/PostgreSQL 两版,换库不慌。本站也收录了 Claude、通义千问,可做对照——不同模型出的 SQL 风格不同,疑难时两版比对更稳。