Oracle實(shí)現(xiàn)同表更新或插入的三種方案
一、需求
現(xiàn)在有一張count表,存在兩個(gè)字段name和count,分別記錄輸入的名稱以及出現(xiàn)的次數(shù)
要求輸入的名稱若在表中未存在,則新增,并初始化count的值為1
若在表中已經(jīng)存在,則將count值加一
二、實(shí)現(xiàn)
2.1 方案一
在處理前統(tǒng)計(jì)name出現(xiàn)的次數(shù),若大于一,則修改,否則為新增
2.2 方案二
根據(jù)上面的邏輯,使用plsql實(shí)現(xiàn)
DECLARE v_count NUMBER; v_name char(20); BEGIN v_name:='a'; SELECT COUNT(*) INTO v_count FROM (SELECT name, COUNT(*) as count FROM count GROUP BY name) WHERE name = v_name; IF v_count >= 1 THEN UPDATE count SET count = count + 1 WHERE name = v_name; ELSE INSERT INTO count values(v_name,1); END IF; END;
更新:此時(shí)往表中插入一條已經(jīng)存在的name a,只需修改v_name 的值為'a'
新增:此時(shí)往表中插入一條不存在的name c,修改v_name 的值為'c'
2.3 方案三
根據(jù)上面的邏輯,使用merge into實(shí)現(xiàn)
merge into count c1 using ( select count(*) count from count c2 where c2.name = 'a' ) c3 on (c3.count > 0) when matched then update set c1.count = c1.count + 1 where c1.name = 'a' when not matched then insert values('a',1) ;
現(xiàn)在清空數(shù)據(jù)表,新增一行數(shù)據(jù)a
再次點(diǎn)擊執(zhí)行,則執(zhí)行修改邏輯
到此這篇關(guān)于Oracle實(shí)現(xiàn)同表更新或插入的方案總結(jié)的文章就介紹到這了,更多相關(guān)Oracle同表更新或插入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
DBA 在Linux下安裝Oracle Database11g數(shù)據(jù)庫圖文教程
正在學(xué)習(xí)Oracle DBA的知識(shí),所以安裝oracle 11個(gè)的數(shù)據(jù)庫用以做測(cè)試,如Clone, RMAN, Stream等2014-08-08Oracle查看表結(jié)構(gòu)的幾種方法示例代碼
本文通過示例代碼給大家介紹了oracle查看表結(jié)構(gòu)的幾種方式,感興趣的朋友參考下吧2017-07-07Oracle中XML插入數(shù)據(jù)時(shí)的空格問題解決方案
在使用 foreach 或其他循環(huán)結(jié)構(gòu)時(shí),插入數(shù)據(jù)庫的數(shù)據(jù)前后可能會(huì)出現(xiàn)不必要的空格,這種額外的空格可能會(huì)導(dǎo)致數(shù)據(jù)不一致,影響查詢結(jié)果,甚至導(dǎo)致應(yīng)用程序的錯(cuò)誤,本文將為您提供一些常見的解決方法和建議,需要的朋友參考下吧2023-08-08Navicat?Premium連接Oracle數(shù)據(jù)庫的2種方式
這篇文章主要給大家介紹了關(guān)于Navicat?Premium連接Oracle數(shù)據(jù)庫的2種方式,大家要使用Navicat Premium連接Oracle數(shù)據(jù)庫,請(qǐng)按照以下步驟操作,需要的朋友可以參考下2024-01-01Oracle 中 table 函數(shù)的應(yīng)用淺析
表函數(shù)可接受查詢語句或游標(biāo)作為輸入?yún)?shù),并可輸出多行數(shù)據(jù)。這篇文章主要介紹了Oracle 中 table 函數(shù)的應(yīng)用淺析,需要的朋友可以參考下2016-12-12Oracle跨數(shù)據(jù)庫查詢并插入實(shí)現(xiàn)原理及代碼
需要從一個(gè)數(shù)據(jù)庫中的表GIS_WEICHAI_DATA_1S中的數(shù)據(jù)導(dǎo)入到另個(gè)一數(shù)據(jù)庫的表GIS_WEICHAI_DATA_1S中,接下來為你講解跨數(shù)據(jù)庫查詢并插入需要的朋友可以參考下2013-03-03