예제 테이블을 사용할 것입니다.CASE 문을 사용하는 SQL 업데이트
tblAnimal :
---------------------------------
|Animal | Colour | Gender |
---------------------------------
|Dog | | |
---------------------------------
tblDescription :
-------------------------------
| Animal | ID | Description |
-------------------------------
| Dog | 1 | Male |
-------------------------------
| Dog | 92 | White |
-------------------------------
그래서 나는 컬러와 성별은 인구가되도록 tblAnimal를 업데이트합니다.
나는 코드UPDATE tblAnimal
SET Colour = CASE WHEN tblDescription.ID = 92 THEN tblDescription.Description END,
Gender = CASE WHEN tblDescription.ID = 1 THEN tblDescription.Description END
FROM tblDescription INNER JOIN tblAnimal
ON tblDescription.Animal = tblAnimal.Animal
을 사용하지만 작동하지 않습니다. tblAnimal의 두 열은 모두 NULL로 유지됩니다. SQL Server는 tblDescription의 첫 번째 행만 검사하는 것처럼 보입니다.
색상 및 성별이 모두 tblDescription에 포함되도록이 UPDATE 문을 작성하는 방법은 무엇입니까?
편집
는 솔루션에 대한 여러분 모두 감사합니다! 그리고 예 테이블을 정규화해야하지만 엄격히 예를 들어 UPDATE 문에 대한 내 질문에 따라야합니다.
다시 한 번 감사드립니다.
아마이 문제를 이해할 수 없습니다. 내 대답은 테이블 간의 일대일 관계를 가정했습니다. @ rida-benhammane의 대답이 올바른 것일 수 있습니다. –
*** @ go_55699 ***,이 접근 방식이 실제로 작동한다는 것을 보여주는 [*** SQL Fiddle ***] (http://sqlfiddle.com/#!6/579a1/1/2)입니다. . – Linger