Oracle內聯檢視更新遇到的問題.
遇到一個批次更新的需求.
我打算用內聯檢視更新+where in list的技巧處理
UPDATE ( SELECT /*+ BYPASS_UJVC */ * FROM mvbox_space.music_original t1 INNER JOIN ( SELECT REGEXP_SUBSTR(value_str, '[^,]+', 1, 1) AS p1, REGEXP_SUBSTR(value_str, '[^,]+', 1, 2) AS p2 FROM ( SELECT SUBSTR(inlist, INSTR(inlist, ';', 1, LEVEL) + 1, INSTR(inlist, ';', 1, LEVEL + 1) - INSTR(inlist, ';', 1, LEVEL) - 1) AS value_str, level AS l FROM ( SELECT ';' || '20077,1;20078,2' || ';' AS inlist FROM DUAL ) CONNECT BY LEVEL <= LENGTH('20077,1;20078,2') - LENGTH(REPLACE('20077,1;20078,2', ';', NULL)) + 1 ) ) t2 ON t1.opus_id = t2.p1 ) SET visit_num = nvl(visit_num, 0) + p2, total_today = nvl(total_today, 0) + p2, total_this_week = nvl(total_this_week, 0) + p2, total_this_month = nvl(total_this_month, 0) + p2
在測試庫10.2.0.1透過.
但是拿到線上10.2.0.4,居然報錯,這個內部的HINT沒有生效.
後來改寫為
MERGE INTO mvbox_space.music_original t1 USING ( SELECT REGEXP_SUBSTR(value_str, '[^,]+', 1, 1) AS p1, REGEXP_SUBSTR(value_str, '[^,]+', 1, 2) AS p2 FROM ( SELECT SUBSTR(inlist, INSTR(inlist, ';', 1, LEVEL) + 1, INSTR(inlist, ';', 1, LEVEL + 1) - INSTR(inlist, ';', 1, LEVEL) - 1) AS value_str, LEVEL AS l FROM ( SELECT ';' || '20077,1;20078,2' || ';' AS inlist FROM DUAL ) CONNECT BY LEVEL <= LENGTH('20077,1;20078,2') - LENGTH(REPLACE('20077,1;20078,2', ';', NULL)) + 1 ) ) t2 ON t1.opus_id = t2.p1 WHEN MATCHED THEN UPDATE SET t1.visit_num = NVL(t1.visit_num, 0) + t2.p2, t1.total_today = NVL(t1.total_today, 0) + t2.p2, t1.total_this_week = NVL(t1.total_this_week, 0) + t2.p2, t1.total_this_month = NVL(t1.total_this_month, 0) + t2.p2
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-1813827/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle學習遇到的問題收集及解決 - 不斷更新Oracle
- 更新swift4所遇到的問題Swift
- 持續更新,檢視dump oracle資料塊檢視Oracle
- oracle 雙網路卡遇到的問題Oracle
- [20211214]檢視檢視V$ACTIVE_SESSION_HISTORY遇到奇怪問題.txtSession
- oracle檢視和更新統計表的資訊Oracle
- Oracle內部檢視:X$BHOracle
- Oracle 增加控制檔案遇到的問題Oracle
- 【Oracle九大效能檢視】之3.v$session_關於與其它效能檢視表聯合查問題SQLOracleSessionSQL
- 檢視oracle中controlfile的內容Oracle
- AIX安裝oracle遇到的問題彙總AIOracle
- 在遊戲中播放cg視訊遇到的問題遊戲
- 更新larabbs到7.x 遇到HTTP Error 500 的問題HTTPError
- pip安裝時遇到的問題集錦,持續更新!
- windows10更新服務遇到問題如何處理_win10更新服務遇到問題需要重啟解決方法WindowsWin10
- oracle觸發器~ 更新多表的問題Oracle觸發器
- 資料檢視的重複問題
- 資訊檢視:iKill,蘋果的中國問題蘋果
- 模式視窗頁面不更新的問題模式
- 工作遇到的問題
- mysql 遇到的問題MySql
- 前端開發中遇到的一些問題----持續更新前端
- AS Notes|記錄日常開發遇到的 AS 問題(不斷更新。。。
- 解決安裝Oracle時檢查監視器不透過的問題Oracle
- 解決安裝Oracle時檢查監視器不通過的問題Oracle
- 持續更新關於ORACLE X$檢視彙總Oracle
- Oracle內部檢視:X$BH與X$LEOracle
- SQLServer訪問Oracle(通過同義詞-檢視-資料字典)出現的問題SQLServerOracle
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- Python安裝cx_Oracle模組遇到的問題PythonOracle
- Oracle11g安裝過程遇到的問題Oracle
- 更新macOS Monterey後遇到的各種Bug問題及解決方法Mac
- 怎樣解決更新MacOS big sur時遇到的那些問題!Mac
- AndroidStudio中遇到的一些問題[不間斷更新]Android
- Oracle有沒有MySQL的分割槽DDL遇到的問題OracleMySql
- linux遇到的問題Linux
- 使用git遇到的問題Git
- AndroidJNI遇到的問題Android