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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Oracle中Merge into的用法实例讲解

發(fā)布時(shí)間:2024/4/17 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Oracle中Merge into的用法实例讲解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

最近在做一個(gè)需求,就是涉及到表的問(wèn)題,前端傳過(guò)來(lái)一條數(shù)據(jù),根據(jù)主鍵,查詢數(shù)據(jù)庫(kù),如果不存在,那么久插入到數(shù)據(jù)庫(kù)中一條,如果存在的話,就是以主鍵的方式,對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù),進(jìn)行更新。

拿到這個(gè)需求的時(shí)候,想的就是直接用if…else…代碼進(jìn)行判斷,首先就是查詢,查到了記錄,就更新,沒(méi)有查到,就進(jìn)行數(shù)據(jù)的直接插入。

這種方法,本來(lái)是沒(méi)有什么問(wèn)題的,畢竟都能夠完成要求,只是,因?yàn)閿?shù)據(jù)庫(kù)中這張表的記錄,實(shí)在是太大,通過(guò)代碼的方式,進(jìn)行查詢判斷的話,實(shí)在是太消耗時(shí)間了,后來(lái)查詢了一下,這才是找到Oracle數(shù)據(jù)庫(kù)的merge into的方法完成。

首先,來(lái)看看merge into的基本語(yǔ)法(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);

  

可能對(duì)于這個(gè)語(yǔ)法,不是太了解,那么咱們現(xiàn)在看一個(gè)簡(jiǎn)單的例子:

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的意思,就是代表著新的學(xué)生的id已經(jīng)存在了數(shù)據(jù)庫(kù)中的話,就是 when matched的時(shí)候,就執(zhí)行update操作;when not matched的時(shí)候,執(zhí)行插入操作。

相比起用代碼的判斷再執(zhí)行更新或者插入操作,sql語(yǔ)句的執(zhí)行,在效率上面來(lái)說(shuō),無(wú)疑是得到了一定的提高,所以使用merge into,還是一個(gè)不錯(cuò)的選擇。

因?yàn)閷?duì)數(shù)據(jù)庫(kù),不太熟悉,沒(méi)有在第一時(shí)間,想到這種操作,這次用到了,也算是學(xué)習(xí)了,記錄一下,以后說(shuō)不定就是會(huì)有用到的時(shí)候。

轉(zhuǎn)載于:https://www.cnblogs.com/liuzhihu/p/8176382.html

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。