가정하자 다른 테이블에서 레코드를 업데이트 :내가 값으로 테이블 A가
표 A :
Data1 Data2 Data3
--------------------
Val2 null val3
null ValB Val3
와 표 B :
Data1 Data2
---------------
Value1 Value2
가 지금은 2를 업데이트 할 tableA의 Val2가 TableB의 Value1과 동일한 TableB의 값을 검사하여 Val3에 대한 TableB의 값 1을 갖는 Table1의 행.
나는 쿼리가 성공적으로 실행되지만 레코드가 업데이트 점점되지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가 널이 될 수 없다) 될 수있는 세트 즉 특정 레코드를 구비한다. 이
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.
:
TIA,
감사합니다,
Abhishek은
DISTINCT는 ** 기능이 아닙니다 **. 'DISTINCT (col) '쓰기는'DISTINCT col '과 동일합니다. 괄호 안에 열 이름을 넣는 것이 합법적이기 때문에 작동합니다. –
'A.Data1 = B.Data2이고 B.Data2가 null입니다. '-이 부분을 확인하십시오. 이 where 절은 true를 반환 할 수 없습니다. –
당신이 말하는 것을 이해할 수 있도록 예제 테이블을 수정하십시오. 당신은 "TableA의 Val2는 TableB의 Value1과 동일하지만 조건은 A.Data1 = B.Data2 (Data2 열에는 값 1이 없음)라고 말합니다. 명확하고 명확한 질문을하면 솔루션의 절반이됩니다. – angus