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的用法实例讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hihoCoder #1639 图书馆
- 下一篇: Sql 08数据库还原数据库时一直提示数