簡體   English   中英

從另一個表更新記錄

[英]Updating a record from another table

假設我有一個包含值的表 A:

表A:

  Data1 Data2 Data3 
 --------------------
   Val2  null  val3
   null  ValB  Val3

和表 B:

Data1   Data2    
---------------
Value1  Value2 

現在,我想通過檢查 TableB 中的值,其中 tableA 的 Val2 等於 TableB 的 Value1,將 Table1 的第二行更新為 Val3。

我曾嘗試使用類似的子查詢來更新它

update TableA 
set Data1=
    (Select distinct(B.Data1)
    from TableB B,TableA A
    where A.Data1=B.Data2 and B.Data2 is null)
where Data3=Val3 

查詢成功執行,但記錄未更新。 tableA 具有集合的特定記錄,即它可以是<Data2,Data3> or <null,Data3> (Data3 不能為空)

任何形式的幫助將不勝感激。

TIA,

問候,

阿布舍克

您的查詢有效,只是不像您想要的那樣匹配。

根據您的問題(不是您的示例數據,這似乎不符合您的要求),我將這些數據放在一起,希望能為您指明正確的方向

create table tablea(data1 varchar2(8) , data2 varchar2(8), data3 varchar2(8) );
create table tableb(data1 varchar2(8) , data2 varchar2(8) );

insert into tablea values('Val2',null,'Val3');
insert into tablea values(null,'ValB','Val3');

insert into tableB values('Value1','ValB');
insert into tableB values('NewValue','Val2');

update TableA 
  set Data1 = nvl((Select B.Data1
                 from TableB B  --no need for join, I believe you want to join to the 'updating table'
                where /*TableA.Data1=B.Data2 
                     and B.Data2 is null*/ -- this won't work, null DOES NOT EQUAL NULL
                     TableA.Data1=B.Data2 
                ) ,TableA.Data1)  --this way, if no data is returned from tableB.data1 to tableA join we will retain tableA.Data1 value
where Data3='Val3' ;


select *  from tableA;


DATA1    DATA2    DATA3    
-------- -------- -------- 
NewValue          Val3     
         ValB     Val3  

請查看有關您的問題的最初問題,您的 WHERE 子句(和加入)正在使事情不起作用

以下是關於如何根據自身與另一個表之間的連接來更新表的非常概括的概述:

UPDATE TableA
 set
   TableAColumn = tb.TableBColumn
  ,TableAOtherColumn = tb.TableBOtherColumn
  ,etc.
 from TableA ta
  inner join TableB tb
   on tb.JoinColumn = ta.JoinColumn
 where ta.FurtherCriteriaColumn = @DesiredTargetValue
  and/or tb.OtherCrieterioColumn < = > @SomeOtherValue
  etc.

有幾種不同的方法可以做到這一點,這只是我使用的基本模板。

暫無
暫無

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

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