日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Oracle中Merge into的用法实例讲解

發布時間:2024/4/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle中Merge into的用法实例讲解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

最近在做一個需求,就是涉及到表的問題,前端傳過來一條數據,根據主鍵,查詢數據庫,如果不存在,那么久插入到數據庫中一條,如果存在的話,就是以主鍵的方式,對數據庫中的數據,進行更新。

拿到這個需求的時候,想的就是直接用if…else…代碼進行判斷,首先就是查詢,查到了記錄,就更新,沒有查到,就進行數據的直接插入。

這種方法,本來是沒有什么問題的,畢竟都能夠完成要求,只是,因為數據庫中這張表的記錄,實在是太大,通過代碼的方式,進行查詢判斷的話,實在是太消耗時間了,后來查詢了一下,這才是找到Oracle數據庫的merge into的方法完成。

首先,來看看merge into的基本語法(Oracle 9i引入的功能):

MERGE INTO table_name alias1 USING (table|view|sub_query) alias2ON (join condition) WHEN MATCHED THEN UPDATE table_name SET col1 = col_val1, col2 = col_val2 WHEN NOT MATCHED THEN INSERT (column_list) VALUES (column_values);

  

可能對于這個語法,不是太了解,那么咱們現在看一個簡單的例子:

merge into Students st using newStudents nst on (st.id = nst.id) when matched then update set st.name = nst.name when not matched then insert values(nst.id, nst.name, nst.sex)

  

這段sql的意思,就是代表著新的學生的id已經存在了數據庫中的話,就是 when matched的時候,就執行update操作;when not matched的時候,執行插入操作。

相比起用代碼的判斷再執行更新或者插入操作,sql語句的執行,在效率上面來說,無疑是得到了一定的提高,所以使用merge into,還是一個不錯的選擇。

因為對數據庫,不太熟悉,沒有在第一時間,想到這種操作,這次用到了,也算是學習了,記錄一下,以后說不定就是會有用到的時候。

轉載于:https://www.cnblogs.com/liuzhihu/p/8176382.html

總結

以上是生活随笔為你收集整理的Oracle中Merge into的用法实例讲解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。