간단한 사례 문을 사용하여 표의 필드를 업데이트하고 싶습니다. 그러나이 case 문을 선택한 행에 적용하고 싶습니다. 이 행이 무엇인지 판별하는 유일한 f}은 다른 테이블에 조인 한 다음 두 x 째 테이블의 필드를 기]으로 한 조건을 갖는 것입니다.SQL Server 업데이트 표 2의 조건이있는 표 1
예를 들어, 하나가이 같은 업데이트 문 내부에 가입 할 수 없습니다 것 같다 ... 나는 그것이 작동 것이라고 생각하는 방법 그러나
update table1
set table1.field1 = case
when table1.field1 = 'foo' then 'bar'
else 'foobar'
end
join table2 on table1.obj_id=table2.id
where table2.field1 = 'fizzbuzz'
and table2.field2 in ('foo', 'bar', 'foobar')
입니다. 적어도 MS SQL에는 없습니다.
나는 대답을 찾으려고 노력했지만 사람들이 조인을 포함하여 다른 테이블의 데이터로 테이블을 업데이트하려고하는데, 그에 따라 사람은 내 조인이있는 곳에서 "출처"문을 넣을 것이고 중첩 된 선택은 그 안에 조인이있는 성명서. 나는 이것이 나를위한 해결책이라고 확신하지 못한다. 다른 테이블에서 업데이트하고 싶지 않습니다. 다른 테이블을 기반으로 필터링하고 싶습니다.
내가 생각할 수있는 유일한 해결책은 먼저 obj_id
의 목록을 검색 한 다음 두 번째 업데이트 문에서이 ID 만 선택하는 두 가지 쿼리 솔루션입니다. 이상적이지 않습니다.
이이 절에서 필요한 않는 SQL Server의 UPDATE 문에 가입 사용할 수 있습니까? – McNets
"그러나 이것은 update 문 안에 조인을 할 수없는 것처럼 보입니다. 적어도 MS SQL에서는 그렇지 않습니다." . 그렇지 않다. – AK47