을 기반으로 한 T-SQL 업데이트 하위 쿼리가 업데이트 된 셀의 일부 키 기반 값을 기반으로 값을 반환해야하는 하위 쿼리로 업데이트하는 데 문제가 있습니다.하위 쿼리
╔══════════════════════════════╗
║ Key1 Key2 Value Other ║
╠══════════════════════════════╣
║ Key11 Key21 Val1 Other1 ║
║ Key12 Key22 Val2 Other2 ║
║ Key13 Key23 Val3 Other3 ║
║ Key14 Key24 Val4 Other4 ║
╚══════════════════════════════╝
을 그리고 내가 좋아하는 일을하고 싶습니다 : 보통은 다음과 같이 테이블과 일하게 될 것입니다
UPDATE Table T1
SET T1.Value = (SELECT T2.Other
FROM Table T2
WHERE T2.Key2 IN ("SOME CONSTRAINT"))
WHERE T1.Key1 = T2.Key2
나는이 작동하지 않을 수 있습니다 알고 있습니다. 외부 where 절은 T2.Key2
을 볼 수 없습니다.
다른 경우는 다른 테이블을 기반으로 한 테이블을 업데이트합니다.
는 Table1
내가 WHERE
하위 쿼리에서 키를 볼 수 없습니다 다시 한번 외부
UPDATE Table1 T1
SET T1.Value = (SELECT T2.Value
FROM Table2 T2
WHERE "SOME CONDITION")
WHERE T1.Key = T2.OtherKey
같은 것을하고 싶어 다시
╔═════════════════╗
║ Key Value ║
╠═════════════════╣
║ Key1 Val1 ║
║ Key2 Val2 ║
║ Key3 Val3 ║
║ Key4 Val4 ║
╚═════════════════╝
그리고 Table2
╔══════════════════════╗
║ OtherKey OtherValue ║
╠══════════════════════╣
║ Key1 Val1 ║
║ Key2 Val2 ║
║ Key3 Val3 ║
║ Key4 Val4 ║
╚══════════════════════╝
이다 말 . 만약 내가 외부 WHERE
두 경우 모두없이 내가 할 하위 쿼리를 허용하지 않는 하나 이상의 값을 반환 오류.
이것은 UPDATE
대신 INSERT
대신에 WHERE
을 사용하면 실제로 루프 또는 커서를 사용하여 업데이트 할 수 있습니다.
업데이트 할 테이블에 행이 있고 업데이트 된 열을 기반으로 "값"을 할당하려는 것과 같이 값 쌍이 많은 (키, 값)과 같은 결과 집합이있는 경우 상황의 바리에이션의 개요가됩니다. "키"를 설정하고 행의 일부 키를 업데이트합니다.
UPDATE Table
SET Value = Other
WHERE Key2 IN ("SOME CONSTRAINT")
AND Key1 = Key2
그리고 : 서브 쿼리가 필요한 이유
당신이'JOIN'와 함께'UPDATE'를 사용하여 봤어? – TTeeple
이것은 경험이 거의없는 개발자가 SQL 쿼리를 작성하는 일반적인 방법입니다. 이들은 데이터 세트를 쿼리로 작성하고 '서로 붙이기'를 시도하지만 더 깨끗한 구문과 의미로 동일한 결과를 얻을 수있는 경우가 많습니다. –