来源:互联网 更新时间:2026-08-07 12:58
你要是不把表结构说清楚,它直接给你编一个字段名出来,能跑才怪。所以,问题的关键就变成了:到底该怎么写提示词,才能让AI一次就输出正确的SQL?
在提问开头,先上代码块,把完整的CREATE TABLE语句贴进去。字段名、类型、主键、NOT NULL约束,一个都不能省。比如:
```sql
CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50) NOT NULL, city VARCHAR(30), reg_time DATETIME);
CREATE TABLE orders (order_id INT PRIMARY KEY, user_id INT, amount DECIMAL(10,2), order_time DATE);
```
千万别写“用户表有ID和姓名”这种模糊描述,模型会自己虚构字段名,比如把user_id写成uid或id_user,到时查出来全是错的。
把自然语言需求拆成【任务】【输入约束】【输出要求】三块,中间空一行隔开,让AI一眼就能抓住重点。
【任务】
检索2024年5月下单金额超过500元的北京用户姓名、手机号、订单数。
【输入约束】
仅使用users和orders表;时间字段统一用order_time;用户地区以users.city字段为准;users表中手机号字段名为phone。
【输出要求】
只输出一条可执行SELECT语句,不带任何解释、不加```sql标记、不换行、不加注释。
漏掉“不加```sql标记”这条,DeepSeek九成概率会返回带代码块包裹的SQL,复制后还得手动删掉前后三重反引号才能执行,徒增麻烦。
方法一:在提示词最开头加一句硬性约束,例如:
“请生成兼容MySQL 8.0的标准SQL,禁止使用ROW_NUMBER()、CTE或LIMIT后跟逗号语法。”
方法二:如果用的是PostgreSQL,就写“所有字段名和表名用双引号包裹,如"users"."name";时间比较用'2024-05-01'::DATE”。
不声明方言,DeepSeek默认按通用ANSI SQL输出,但实际环境可能是MySQL或SQLite——前者不支持FULL OUTER JOIN,后者不支持窗口函数,一执行就报错。
① 输入:“查上海用户的平均订单金额” → 输出:SELECT A VG(o.amount) FROM users u JOIN orders o ON u.id = o.user_id WHERE u.city = '上海';
② 输入:“列出每个城市订单数前三的用户姓名” → 输出:SELECT u.name, u.city, COUNT(*) AS cnt FROM users u JOIN orders o ON u.id = o.user_id GROUP BY u.city, u.name ORDER BY u.city, cnt DESC LIMIT 3;
这两个例子必须来自同一套表结构,字段名、别名风格、聚合写法完全一致——DeepSeek会照着这个模式仿写,而不是凭空发明别名或函数。
Ondo将于今日上线股票永续合约
黄金价格不断创新高!黄金稳定币XAU、PAXG市值达11亿美元
新浪机器学习热点小时报丨2026年07月25日18时_今日实时机器学习热点速递
新破天一剑太极刀任务攻略 破天一剑怎么取太极刀
晶核艾尔莎角色盘点 晶核艾尔莎强度分析与实战表现
CC币价格预测(2026-2035):Canton币今日价格走势+长期价格预测
区块链OTC交易所有哪几家比较正规?
Intel喜讯连连:18A工艺良率提升到85%、CPU将涨价15%
蚂蚁庄园今日答案7月21日(今日已更新) 蚂蚁庄园今天正确答案是什么呢
新浪互联网热点小时报丨2026年07月26日16时_今日实时互联网热点速递
今日比特币暴涨分析:Metaplanet的比特币BTC投资推动股价上涨17%
合集38个项目筹集5.406亿美元 Figure融资2亿
AMD英特尔集体失眠!英伟达Rosa CPU搭载Rigel核:单核性能碾压x86
遗忘之海密室通关教程 遗忘之海密室全关卡解谜思路与难点解析
五菱星光L六座新能源SUV上市:三版可选,中配12.28
抖音怎么取消申请退货退款?抖音上取消退货怎么操作
macOS 28将移除Rosetta 2兼容层,Intel应用面临运行危机
腾讯ima怎么创建共享知识库?
小鸡答题今天的答案是什么2026年7月9日
潜水员戴夫丛林DLC接吻的鱼任务攻略
手机号码测吉凶
本站所有软件,都由网友上传,如有侵犯你的版权,请发邮件haolingcc@hotmail.com 联系删除。 版权所有 Copyright@2012-2013 haoling.cc