잘못된 상태가있는 멤버 테이블을 가져 왔습니다. State Abbreviation을 갖는 대신 완료된 State Name을 포함합니다.JOIN 및 인사이드 쿼리를 사용하여 테이블 업데이트
아래 쿼리 작업을 수행하고 Members.StateName 및 State.Abbreviation을 끌어 :
이제Connecticut CT
Maryland MD
Massachusetts MA
나는 내가 State.Abbreviation로 Members.StateName를 교체하고 명령을 작성하고 업데이트하는 것을 시도하고있다 .
UPDATE dbo.Members
SET memState = (SELECT s.stAbv FROM dbo.State AS s
JOIN Members AS m ON s.stName = m.memState)
WHERE memState NOT IN (SELECT s.stAbv FROM dbo.State AS s)
ERROR : 부질는 1 개 이상의 값을 반환. 하위 쿼리가 =,! =, <, < =,>,> = 또는 하위 쿼리가 식으로 사용될 때 하위 쿼리가 수행되는 경우에는 허용되지 않습니다.
명세서가 종료되었습니다. 오류로 인해 내부 쿼리가 여러 행을 반환하므로 업데이트 할 수 없다는 것을 이해합니다. 어떻게 작동 시키나요?
dbo.State에 같은 이름의 상태 행이 두 개 이상 있습니까? 그렇다면 삭제 된/삭제 된 것으로 표시되거나 특정 국가에 묶여서는 안되며, 미국 주, 영국 카운티 등이 테이블에 있다면? –
아래 코드 = MEMSTATE NOT IN (들을 선택 WHERE (1 s.stAbv dbo.State AS의 가 s.stName m.memState = ON m AS 회원 가입 FROM TOP SELECT) 업데이트 dbo.Members SET MEMSTATE 근무 .stAbv FROM dbo.State AS s) –
그래도 그게 옳은거야? TOP 1에 의해 반환 된 약어는 '올바른'상태의 약어일까요? 왜 당신은 당신의 탁자에 특정 이름의 주를 1 개 이상 가지고 계셨습니까? –