iT邦幫忙

2025 iThome 鐵人賽

DAY 20
0

條件式增 改 刪合併資料:MERGE
會針對指定條件從來源選取資料列,和目標資料做比較,如果條件符合就會用來源資料列的資料更新或刪除目標資料表內之資料列如果條件不符合就會新增到目標資料列
MERGE INTO 目標資料列 [別名]
USING {來源資料表|(子查詢)} ON(條件)
WHEN MATCHED THEN
UPDATE SET 欄位 ={表達式|預設值}
[WHERE 過濾子句][DELETE WHERE 過濾子句]

WHEN NOT MATCHED THEN
INSERT (欄位 [,...])
VALUES ({表達式 | 預設值}[,{表達式 | 預設值}...])
[WHERE 過濾子句]

多表新增資料列 Muti-Table INSERTS

  • 無條件多表新增資列
    INSERT ALL
    INTO TABLE1(欄位1,欄位2,...) VALUES(欄位1,欄位2,...)
    INTO TABLE2(欄位1,欄位2,...) VALUES(欄位1,欄位2,...)
    INTO TABLE3(欄位1,欄位2,...) VALUES(欄位1,欄位2,...)
    子查詢;
  1. 從子查詢的資料表中查找欄位1 欄位2...之資料,再將其分別寫在指定的TABLE對應欄位內
  2. ALL為必須關鍵字 不可省略
  3. 至少要有一個INTO子句
  4. 每個INTO可擁有獨自VALUES子句
  5. 每個VALUES子句均為選擇性,可省略。當省略VALUES時,會以子查詢SELECT子句的欄位取代
  6. 子查詢必須為有效之SELECT子句
  7. 當與句中任何一個子句發生錯誤時會執行倒回

條件式多表新增資料:使用WHEN子句來過濾判斷子查詢的SELECT子句檢索欄位結果集要存入哪個指定的分割資料表內
INSERT [ALL|FIRST]
WHEN 條件1 THEN
INTO TABLE1 VALUES(欄位1,...欄位2,...)
WHEN 條件2 THEN
INTO TABLE2 VALUES(欄位1,...欄位2...)
...
ELSE
INTO TABLE3(欄位1, 欄位2,...)

  1. [ALL|FIRST]為選項可省略 預設值為ALL
  2. 一個WHEN子句內可以有多個INTO子句
  3. 每個INTO可擁有獨自VALUES子句
  4. 每個VALUES子句均為選擇性,可省略。當省略VALUES時,會以子查詢SELECT子句的欄位取代
  5. ELSE...INTO...子句必須效在所有的WHEN之後
  6. 子查詢必須為有效之SELECT子句
  7. 當與句中任何一個子句發生錯誤時會執行倒回

上一篇
Day 19 操作語言
下一篇
Day 21 建立與管理資料表
系列文
跟著生成式AI一起從零開始學習資料庫,22
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言