簡體   English   中英

基於rownum的Oracle更新

[英]Oracle update based on rownum

我需要編寫oracle sql,以使用rownum從不相關的表中更新值。

我無法正常工作:

UPDATE table_1 A
SET A.id = (SELECT B.id FROM table_2 B
         WHERE A.rownum = B.rownum)

謝謝。

只需要將值從列ID插入到另一個表中。 除了rownum外,沒有可用於聯接的列。 這可能嗎?

使用MERGE語句而不是UPDATE。
請在下面找到一個簡單的例子。


首先測試數據(表table_2 id table_2空):

create table table_2 as
SELECT LEVEL as id, chr(64+level) as name
from dual connect by level <= 5;

create table table_1 as select * from table_2;
update table_2 set id = null;
commit;

SELECT * FROM table_1;
        ID NAME
---------- ----
         1 A   
         2 B   
         3 C   
         4 D   
         5 E 



SELECT * FROM table_2;
        ID NAME
---------- ----
           A   
           B   
           C   
           D   
           E 

這是MERGE命令,它基於行號從一表到第二表的復印機id值:

MERGE INTO table_2 t2
USING (
        SELECT *
        FROM (
                select t.*, rownum as rn
                from table_1 t
        ) t1
        JOIN (
                select rownum as rn, rowid as rid
                from table_2 t
        ) t2
        ON t1.rn = t2.rn
) d
ON ( t2.rowid = d.rid )
WHEN MATCHED THEN UPDATE SET t2.id = d.id;

合並后的結果是:

SELECT * FROM table_2;
        ID NAME
---------- ----
         1 A   
         2 B   
         3 C   
         4 D   
         5 E 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM