91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

oracle merge into的用法是什么

發布時間:2021-11-09 16:28:04 來源:億速云 閱讀:181 作者:柒染 欄目:建站服務器

這篇文章將為大家詳細講解有關oracle merge into的用法是什么,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

1.    MERGE INTO 的用途
         MERGE INTO 是Oracle 9i以后才出現的新的功能。那這個功能 是什么呢?
         簡單來說,就是:“有則更新,無則插入”
         從這句話里,應該可以理解到,merge into 操作一個對象'A'的時候,要有另外一個結果集做為源數據 'B'.
         ‘merge into’  將B中的數據與A中的數據按照一定條件'C'進行對比,如果 A中數據滿足C條件,則進行update操作,如果不滿足條件 'C',則進行insert操作。(請注意這種對應關系)

2、 語法結構
      
       MERGE [INTO] [schema.]table [alias]
       USING {[schema.]table|views|query} [alias]
       ON {condition}
       WHEN MATCHED THEN UPDATE SET {clause}
       WHEN NOT MATCHED THEN INSERT VALUES {clause}
     
       我們可以用于單條數據的處理,也可以用于數據的批處理。對于merge into來說,那都是張飛吃豆芽兒,小菜一碟兒。而且效率要比單獨執行update+insert 操作效率要高。
    但是請注意,using語句中的結果集 B不可以與merge into 的對象A相同,否則,會因為結果集A,B恒等。

當 on() 進行等值判斷時,只可以進行update操作,不能進行insert 操作,當 on() 進行不等值判斷時,只可以進行insert操作,不能進行update操作。

         可能這樣說還不是很清楚。下面我們實際操作演示,就會理解清楚了。

3.   測試 MERGE INTO
--------------------------------------------------------------------------------------------------------------
-------------------------------------        創建測試表--TEST1    ----------------------------------

 SQL>         CREATE TABLE TEST1(
      2          USERID        NUMBER,
      3          ID                  NUMBER);

Table created
--------------------------------------------------------------------------------------------------------------
----------------------------------          填充測試數據                ------------------------------- 
    
SQL> begin
  2  for i in 200..230 loop
  3  insert into test1 values(i,(i+100)/10);
  4  end loop;
  5  end;
  6  /

PL/SQL procedure successfully completed

SQL> select * from test1;

    USERID         ID
---------- ----------
       200         30
       201       30.1
       202       30.2
       203       30.3
       204       30.4
       205       30.5
       206       30.6
       207       30.7
       208       30.8
       209       30.9
       210         31
       211       31.1
       212       31.2
       213       31.3
       214       31.4
       215       31.5
       216       31.6
       217       31.7
       218       31.8
       219       31.9

    USERID         ID
---------- ----------
       220         32
       221       32.1
       222       32.2
       223       32.3
       224       32.4
       225       32.5
       226       32.6
       227       32.7
       228       32.8
       229       32.9
       230         33

31 rows selected
--------------------------------------------------------------------------------------------------------------
-----------------------------    創建測試表--TEST2 、TEST3      --------------------------------

SQL> create table test2
  2  as
  3  select userid,trunc(id,-1) id2 from test1 where length(id)=4;

Table created

SQL> select * from test2;

    USERID        ID2
---------- ----------
       201         30
       202         30
       203         30
       204         30
       205         30
       206         30
       207         30
       208         30
       209         30
       211         30
       212         30
       213         30
       214         30
       215         30
       216         30
       217         30
       218         30
       219         30
       221         30
       222         30

    USERID        ID2
---------- ----------
       223         30
       224         30
       225         30
       226         30
       227         30
       228         30
       229         30

27 rows selected

SQL> create table test3
  2  as
  3  select userid,id id3 from test1 where length(id) <> 4;

Table created

SQL> select * from test3;

    USERID        ID3
---------- ----------
       200         30
       210         31
       220         32
       230         33
--------------------------------------------------------------------------------------------------------------
-----------------------------------      測試MERGE INTO            -----------------------------------

SQL> MERGE INTO test3 t
  2  USING (SELECT userid,id2 FROM test2 WHERE id2=30) tw
  3  ON (t.userid = tw.userid)
  4  WHEN MATCHED THEN UPDATE SET t.id3=tw.id2
  5  WHEN NOT MATCHED THEN INSERT VALUES(tw.userid,tw.id2);

Done

SQL> SELECT * FROM test3;

    USERID        ID3
---------- ----------
       200         30
       210         31
       220         32
       230         33
       202         30
       201         30
       204         30
       203         30
       228         30
       217         30
       209         30
       221         30
       219         30
       227         30
       205         30
       212         30
       225         30
       208         30
       222         30
       226         30

    USERID        ID3
---------- ----------
       215         30
       218         30
       214         30
       216         30
       211         30
       224         30
       213         30
       223         30
       206         30
       207         30
       229         30

31 rows selected

SQL>

--測試完成,我們看到,test2表中的數據全部加到test3表中。

PS:

   on(condition_clause)這里的條件句中,可以使用=,>,< 等比較運算符。


關于oracle merge into的用法是什么就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

青阳县| 买车| 新化县| 平山县| 旌德县| 淳安县| 武威市| 新安县| 四子王旗| 宣武区| 甘孜| 宁波市| 九龙县| 高碑店市| 永靖县| 锡林郭勒盟| 武宁县| 保德县| 沂水县| 武冈市| 凤山县| 台东县| 呼图壁县| 磐石市| 卢龙县| 屯留县| 廊坊市| 页游| 景泰县| 焉耆| 东乌珠穆沁旗| 镇平县| 武平县| 五峰| 赤壁市| 任丘市| 龙陵县| 吉水县| 清河县| 方城县| 榆林市|