☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜
为提升sql查询准确性,需在支持上下文的copilot环境(如fabric、azure sql portal或ssms 19.4+)中使用“明确任务+精简表结构+3~5行真实样例数据”三要素提示法。
在 microsoft copilot 中为 sql 查询添加示例数据,能显著提升生成结果的准确性与稳定性,尤其当表结构复杂或字段语义模糊时——copilot 依赖上下文推断意图,空泛提问容易导致列名误判、join 错位或聚合逻辑错误。
确认当前环境支持示例输入
确保你正在使用支持上下文感知的 Copilot 实例:Fabric SQL 数据库查询编辑器、Azure SQL Portal 中的 Copilot 聊天窗格,或 SSMS 19.4+ 版本。旧版 SSMS 或通用 Bing Copilot 【不读取你粘贴的表结构和样例数据】,会忽略所有 schema 描述直接按通用语法猜测。
打开聊天窗格后,先输入一句测试提示,如“列出最近7天订单总额”,观察 Copilot 是否自动引用数据库中真实存在的表名(如 SalesLT.SalesOrderHeader)。若返回的是 generic 表名(orders、customers),说明当前会话未绑定数据库上下文,需切换至 Fabric 或 Azure SQL 门户内启用的 Copilot。
构造带示例的提示词三要素
一个稳定输出的提示必须同时包含:明确任务 + 精简表结构 + 小而准的样例数据。缺一不可。
第一步:用自然语言锁定任务目标,避免模糊动词。❌“查一下客户信息” → ✅“查询2025年Q1下单且收货地址含‘Shanghai’的客户姓名、邮箱和订单总金额”。
第二步:只提供本次查询涉及的表与字段,删掉无关表。例如只查订单和客户,就只写 SalesLT.Customer 和 SalesLT.SalesOrderHeader,字段只列 name、email、order_date、total_due——【字段名必须与数据库实际大小写一致,SQL Server 默认不区分但 Copilot 在 Fabric 中严格匹配】。
第三步:插入3~5行真实样例数据,用 Markdown 表格格式,字段顺序与上一步定义完全一致。不要用占位符如 [name],直接写 'Alice Johnson'、'alice@demo.com'。Copilot 对字符串字面量的识别远强于抽象描述。
两种实操方法选其一
方法一:在 Fabric SQL 查询编辑器中边写边试
使用 Azure AI 项目 Python SDK (azure-ai-projects) 构建 AI 应用。适用于处理 Foundry 项目客户端、使用 PromptAgentDefinition 创建版本化代理、运行评估、管理连接/部署/数据集/索引,或使用 OpenAI 兼容客户端。这是高级 Foundry SDK - 如需低级代理操作,请使用 azure-ai-agents-python 技能。
在编辑器顶部新建注释行,以 -- 开头,完整粘贴如下结构:
-- 查询2025年Q1下单且收货地址含'Shanghai'的客户姓名、邮箱和订单总金额
-- 表结构:
-- SalesLT.Customer: CustomerID INT, FirstName NVARCHAR(50), EmailAddress NVARCHAR(100)
-- SalesLT.SalesOrderHeader: SalesOrderID INT, CustomerID INT, OrderDate DATE, TotalDue MONEY
-- 示例数据:
-- CustomerID | FirstName | EmailAddress
-- 1001 | Alice Johnson | alice@demo.com
-- 1002 | Bob Chen | bob@sh.cn
-- SalesOrderHeader:
-- SalesOrderID | CustomerID | OrderDate | TotalDue
-- 78901 | 1001 | 2025-02-15 | 1299.99
-- 78902 | 1002 | 2025-03-04 | 845.50
敲回车后,Copilot 会立即在下方生成 SELECT 语句,自动完成 INNER JOIN、WHERE 时间范围过滤、LIKE 匹配地址,并加上 LIMIT 100——这正是它读取到样例中日期和金额类型后的精准响应。
方法二:在 Azure SQL Portal 聊天窗格中分段提交
先发送表结构定义(不含样例):“这是 SalesLT.Customer 和 SalesLT.SalesOrderHeader 的字段:CustomerID, FirstName, EmailAddress / SalesOrderID, CustomerID, OrderDate, TotalDue”。等待 Copilot 确认理解后,再发第二条:“以下是我的查询需求和3行样例数据:查询2025年Q1……;样例:CustomerID=1001, FirstName='Alice', EmailAddress='alice@demo.com';SalesOrderID=78901, CustomerID=1001, OrderDate='2025-02-15', TotalDue=1299.99”。注意:不能把表结构、需求、样例压成一条消息发送,Azure Copilot 会截断或混淆优先级。










