저는 SQL 코딩을 처음 접했을뿐 아니라 여전히 복잡한 것을 배우고 있습니다. 내가 조사한 바 있고 내가 뭘 하려는지 (어쩌면 내가 적절한 키워드를 놓치고있는)와 관련된 예제를 찾을 수 없었다.SQL Server에 관련된 세 번째 테이블로 쿼리를 업데이트하십시오. 2016
나는 SQL 서버 2016에서 세 개의 테이블이 (직원 테이블 - E1, 직원 데이터를 가져온 테이블 - ED1 및 부서 테이블 - D1) ...이 질문에 대한 적절한 구조는 다음과 같습니다에
E1 DB1은 DBO의 스키마와 DB2의 열
U_SysID - Identity,
UserID - VARCHAR,
FirstName - VARCHAR,
LastName - VARCHAR,
DepartmentID - VARCHAR
에게 ED1를 포함는 DB1의 열
UserID - VARCHAR,
FirstName - VARCHAR,
LastName - VARCHAR,
DepartmentName - VARCHAR
D1은 열
를 포함 포함USE DB1
GO
UPDATE E1
SET DepartmentID = (SELECT DepartmentID
FROM D1
WHERE E1.UserID IN (SELECT UserID
FROM DB2.dbo.ED1)
AND D1.DepartmentName IN (SELECT DepartmentName
FROM ED1)
AND E1.UserID = DB2.dbo.ED1.UserID)
내 문제는 마지막 라인 :
DepartmentID - Identity and
DepartmentName - VARCHAR
코드 나는 이것이 달성하려고 함께했다. "DB2.dbo.ED1.UserID"는 다중 부분 식별자를 바인드 할 수 없습니다. 메시지를 생성합니다. 오타가없고 위의 select 문에서 해당 데이터베이스 참조를 사용할 때 아무런 문제가 없지만 마지막 줄을 제거하면 하위 쿼리가 두 개 이상의 값을 반환했다는 메시지가 나타납니다.
이 글을 읽고 제안하는 데 많은 시간을 할애 해 주시면 감사하겠습니다.
내가이 게시물을 올바르게 공식화하지 않았다면 사전에 사과해야합니다.
모든 하위 쿼리 대신 조인을 사용해야합니다. 그리고이 글을 쓰는 동안 1 개 이상의 가치가 반환 될 수 있으므로주의하십시오. –
이 설명에 감사드립니다. –