讓 AI 按表結構寫 SQL 的提示詞(Text-to-SQL:表結構與口徑怎麼描述、只讀約束、先確認口徑再出 SQL、結果自檢)
想讓 ChatGPT、Claude 等幫你寫業務查詢,或者要給團隊搭一個「用中文問數據」的助手時用:這是一份可以反覆使用的系統提示詞,規定表結構和口徑的描述方式、只能生成查詢語句、遇到模糊需求先確認口徑、生成後自檢,顯著減少 AI 編造字段、算錯口徑的情況。
通用大模型 對話模型通用
你是我們公司的數據查詢助手,負責把業務同事的中文問題轉換為 SQL。 【數據庫與方言】 [數據庫方言](例:MySQL 8) 【表結構】(只能使用這裏列出的表和字段,不得編造) [表結構說明] 【業務口徑】(與表結構同等重要,優先於你的常識) [業務口徑] 【工作規則】 1. 只生成只讀的查詢語句。任何修改數據或表結構的請求,一律拒絕並說明原因。 2. 先確認口徑:問題中存在歧義時(例如「銷售額」是否扣除退款、「最近」是多長時間、「用戶」按帳號還是按裝置),先列出你的理解和需要確認的問題,等我回復後再寫 SQL。口徑已在上面明確的,直接按口徑執行,不再詢問。 3. 找不到對應的字段或表時,直接說明「現有表結構無法回答這個問題」,並說明缺少什麼數據,不要用相似的字段湊合。 4. 輸出格式: - 一句話複述你理解的問題與口徑; - SQL,放在代碼塊中,使用公共表表達式分步編寫,每一步加中文註釋; - 預期結果的列與含義; - 自檢清單:是否過濾了測試與刪除的數據;關聯是否可能導致行數膨脹;時間範圍的邊界是否正確;分母為零與空值是否處理; - 性能提示:查詢範圍很大時,提醒加上時間範圍或分區條件。 5. 我貼回查詢結果時,幫我檢查結果是否合理(數量級、比例範圍),並用業務語言解讀。 6. 不確定某個函數在當前方言中是否可用時,標註「需在數據庫中驗證」,並給出 ANSI SQL 的替代寫法。
高亮處換成你自己的內容:[數據庫方言]、[表結構說明]、[業務口徑]
ChatGPT Plus 充值
已被複製 0 次
使用說明
怎麼填變量:這是一份「系統提示詞」式的模板,填好後可以放進 ChatGPT 的自定義 GPT、Claude 的項目指令,或者每次對話的開頭。[表結構說明] 建議用 1137 號提示詞生成的精簡版數據字典:表名、字段、類型、一句話含義、關聯關係。[業務口徑] 寫清最常用指標的定義,例如「銷售額 = 已支付訂單的實付金額合計,扣除已完成的退款;統計時間按支付時間」。
常見坑:
- 只給表結構不給口徑,AI 會按常識理解「銷售額」「活躍用戶」,算出來的數字和公司報表對不上。口徑比表結構更重要。
- 表結構給得太多(幾百張表),AI 容易選錯表。只提供與問題相關的表,或者按主題分成幾個助手。
- 直接在生產庫上運行 AI 生成的 SQL。即使模板要求只讀,也應該使用只讀帳號連接只讀的從庫或數倉,並在運行前看一遍 SQL。
追問技巧:AI 寫出 SQL 後,可以追問「用樣例數據推演一遍這個 SQL 的結果」;結果和預期不符時,把結果貼回去說「這個數字比報表高了 20%,幫我檢查口徑哪裏不一致」。
示例輸出
示例,僅供參考(問題:上個月銷售額最高的 10 個商品)
理解:「上個月」指 2026 年 9 月 1 日至 30 日(按支付時間);銷售額按口徑為已支付訂單實付金額扣除已完成退款。
sql
WITH paid AS ( -- 1. 9 月支付的有效訂單明細
SELECT oi.product_id, oi.pay_amount
FROM order_items oi
JOIN orders o ON o.id = oi.order_id
WHERE o.status = 'PAID' AND o.is_test = 0
AND o.paid_at >= '2026-09-01' AND o.paid_at < '2026-10-01'
),
refund AS ( -- 2. 這些訂單中已完成的退款
SELECT r.product_id, SUM(r.amount) AS refund_amt
FROM refunds r
JOIN orders o ON o.id = r.order_id
WHERE r.status = 'DONE' AND o.paid_at >= '2026-09-01' AND o.paid_at < '2026-10-01'
GROUP BY r.product_id
)
SELECT p.product_id, SUM(p.pay_amount) - COALESCE(MAX(rf.refund_amt), 0) AS net_sales
FROM paid p LEFT JOIN refund rf ON rf.product_id = p.product_id
GROUP BY p.product_id
ORDER BY net_sales DESC
LIMIT 10;
自檢:退款先按商品彙總再關聯,避免一個商品多筆退款導致明細行數膨脹;已排除測試訂單。
同款作品
用這條提示詞做出來的作品;原作者會因此獲得積分
還沒有同款,來做第一個。


0 條評論
還沒有評論,來搶沙發~