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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [20211214]檢視檢視V$ACTIVE_SESSION_HISTORY遇到奇怪問題.txtSession
- Python安裝cx_Oracle模組遇到的問題PythonOracle
- Oracle有沒有MySQL的分割槽DDL遇到的問題OracleMySql
- fdisk 更改分割槽容量遇到問題,還以為是oracle asm的問題OracleASM
- pip安裝時遇到的問題集錦,持續更新!
- 更新larabbs到7.x 遇到HTTP Error 500 的問題HTTPError
- AS Notes|記錄日常開發遇到的 AS 問題(不斷更新。。。
- ORACLE RAC TO RAC DG搭建過程中可能遇到的問題Oracle
- windows10更新服務遇到問題如何處理_win10更新服務遇到問題需要重啟解決方法WindowsWin10
- 使用ogg 從oracle 同步mysql遇到問題記錄OracleMySql
- 資料檢視的重複問題
- linux遇到的問題Linux
- Vagrant 遇到的問題
- Homestead 遇到的問題
- sudo 遇到的問題
- JackJson遇到的問題JSON
- mysql 遇到的問題MySql
- WangEditor遇到的問題
- 在遊戲中播放cg視訊遇到的問題遊戲
- Oracle普通檢視和物化檢視的區別Oracle
- 怎樣解決更新MacOS big sur時遇到的那些問題!Mac
- 前端開發中遇到的一些問題----持續更新前端
- 11、Oracle中的檢視Oracle
- Oracle 級聯表更新和SQLServer 級聯表更新OracleSQLServer
- 更新macOS Monterey後遇到的各種Bug問題及解決方法Mac
- 使用git遇到的問題Git
- SpringBoot遇到的某些問題Spring Boot
- 我遇到的小白問題
- React Native遇到的問題React Native
- 部署Jenkins + 遇到的問題Jenkins
- fastadmin自己遇到的問題AST
- 本週遇到的問題
- 遇到奇葩問題
- 檢視oracle臨時表空間佔用率的檢視Oracle
- Oracle OCP(24):檢視Oracle
- 遇到的編碼問題、時區問題整理
- 問題:PCB檔案PADS檢視不了
- [20210418]查詢v$檢視問題.txt
- thinkphp6 檢視問題總結PHP