已有表結構,想快速產一段查詢語法。
資料表結構如下:{貼上欄位說明}。我想查:{自然語言問題}。
規則:
1. 只產生 SELECT 查詢,任何會修改資料的語法(UPDATE/DELETE/INSERT/DROP)一律拒絕產生。
2. 附上這段語法「在做什麼」的白話解釋,讓不會 SQL 的我看得懂。
3. 指出這個查法的口徑假設(例如:有沒有排除已取消訂單),讓我確認。可替換變數
| 變數 | 要換成什麼 |
|---|---|
{貼上欄位說明} | 表名、欄位名、欄位意義。不要貼連線字串或密碼。 |
{自然語言問題} | 你要查什麼,越具體越好。 |
完整使用範例(照這樣填)
資料表結構如下: 訂單表 orders:order_id(訂單編號)、customer_id(客戶代號)、order_date(下單日)、ship_date(出貨日,可為空)、amount(金額,未稅)、status(狀態:normal/cancelled/returned) 客戶表 customers:customer_id、customer_name、region(區域)、is_test(是否測試帳號) 我想查:今年第二季,各區域已出貨的訂單金額合計與筆數。 規則:(照母提示詞三條)
預期輸出範例(拿到的東西應該長這樣)
【查詢語法】
SELECT c.region AS 區域,
COUNT(*) AS 訂單筆數,
SUM(o.amount) AS 金額合計
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
WHERE o.ship_date >= '2025-04-01'
AND o.ship_date < '2025-07-01'
AND o.status = 'normal'
AND c.is_test = 0
GROUP BY c.region
ORDER BY 金額合計 DESC;
【白話解釋】
這段的意思是:從訂單表撈出「出貨日落在 4 月 1 日到 6 月 30 日之間」的訂單,跟客戶表對起來拿到區域;只算狀態是正常的(排除取消與退貨),也排除測試帳號的客戶;然後按區域分組,算出每個區域有幾筆、金額加起來多少,金額高的排前面。
【這個查法的口徑假設,請你確認】
1. 期間依「出貨日」切,不是下單日。→ 未出貨的訂單完全不計入。若你要的是下單日口徑,數字會不同。
2. 排除 status = 'cancelled' 與 'returned'。→ 退貨的訂單不計入,也不做負數扣除。若你的既有報表是「扣除退貨金額」,數字會不同。
3. 排除 is_test = 1 的客戶。
4. 金額為未稅。
5. 沒有區域的客戶(region 為空)會被歸成一組空白,不會被排除。
請確認以上五點,特別是第 1、2 點——這兩點最常造成與既有報表對不起來。常見錯誤用法
- 把連線字串或密碼一起貼進去。永遠不要。
- 拿到語法不看白話解釋就執行。白話解釋存在就是為了讓你審得動。
- 跳過口徑假設那一節。多數數字爭議來自這裡。
- 用有寫入權限的帳號執行。提示詞不是安全機制,唯讀帳號才是。
- 涉及薪資或個資的資料表。
表結構不完整時,AI 會猜欄位名——產出的語法執行時會報錯(好的情況)或查到錯的欄位(壞的情況)。所以表結構要給完整,包含欄位的實際名稱與型態。
- 確認唯讀帳號。
- 審語法與白話解釋。
- 確認口徑假設。