한 열에서 다른 테이블의 다른 열로 데이터를 복사하고 싶습니다. 어떻게 할 수 있습니까?
다음을 시도했습니다.
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
하지만 작동하지 않았습니다.
연락처 테이블의 "BusinessCountry"열을 tblindiantime 테이블의 "CountryName"열에 복사하고 싶습니다.
한 열에서 다른 테이블의 다른 열로 데이터를 복사하고 싶습니다. 어떻게 할 수 있습니까?
다음을 시도했습니다.
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
하지만 작동하지 않았습니다.
연락처 테이블의 "BusinessCountry"열을 tblindiantime 테이블의 "CountryName"열에 복사하고 싶습니다.
답변:
SQL Server 2008에서는 다음과 같이 다중 테이블 업데이트를 사용할 수 있습니다.
UPDATE tblindiantime
SET tblindiantime.CountryName = contacts.BusinessCountry
FROM tblindiantime
JOIN contacts
ON -- join condition here
업데이트 할 행을 지정하려면 조인 조건이 필요합니다.
대상 테이블이 현재 비어 있으면 대신 INSERT를 사용해야합니다.
INSERT INTO tblindiantime (CountryName)
SELECT BusinessCountry FROM contacts
다음은 쿼리입니다.
같은 테이블 :
UPDATE table_name
SET column1 = column2
다른 테이블 :
UPDATE table_name1
SET column1 = (
SELECT column2
FROM table_name2
WHERE table_name1.id = table_name2.id
);
Table2.Column2 => Table1.Column1
나는이 질문이 오래되었다는 것을 알고 있지만 받아 들여진 대답은 나를 위해 작동하지 않았습니다. 미래의 Google 직원에게는 이것이 저에게 효과적이었습니다.
UPDATE table1
SET column1 = (
SELECT column2
FROM table2
WHERE table2.id = table1.id
);
이에 따라 :
[Michael Pakhantsov]
키 필드가 두 개의 테이블이 있기를 바랍니다.
UPDATE tblindiantime t
SET CountryName = (SELECT c.BusinessCountry
FROM contacts c WHERE c.Key = t.Key
)
ORA-01427: single-row subquery returns more than one row합니다. 선택이 둘 이상의 행을 반환하면 발생합니다. 둘 이상의 행을 선택하고 이러한 값으로 열을 업데이트하려면 어떻게해야합니까?
WHERE. tblindiantime 필드가있는 경우 예를 들어, ContactID은 IS, ID행의를에 contacts있는 tblindiantime의 각 행에 속해, 당신은 사용합니다 WHERE tblindiantime.ContactID=contacts.ID. 다른 변형에 대해서는 cedrikdlb의 답변 을 참조하십시오 .
비슷한 질문의 답변 이이 질문의 선택된 답변 (Mark Byers에 의해) 보다 더 정확하게 작동했습니다 . Mark의 대답을 사용하여 업데이트 된 열은 모든 행에서 동일한 값을 얻었습니다 (아마도 조인과 일치하는 첫 번째 행의 값). 다른 스레드의 ParveenaArora의 답변을 사용하여 올바른 값으로 열을 업데이트했습니다.
이 질문의 테이블 및 열 이름을 사용하도록 Parveena의 솔루션을 변환하면 쿼리는 다음과 같습니다 (테이블이 tblindiantime.contact_id를 통해 관련되어 있다고 가정합니다).
UPDATE tblindiantime
SET CountryName = contacts.BusinessCountry
FROM contacts
WHERE tblindiantime.contact_id = contacts.id;
이전의 모든 답변이 정확하다고 생각합니다. 아래 코드는 한 번에 여러 행을 업데이트해야하는 경우 특히 매우 유효합니다. 참고 : PL / SQL입니다.
DECLARE
CURSOR myCursor IS
Select contacts.BusinessCountry
From contacts c WHERE c.Key = t.Key;
---------------------------------------------------------------------
BEGIN
FOR resultValue IN myCursor LOOP
Update tblindiantime t
Set CountryName=resultValue.BusinessCountry
where t.key=resultValue.key;
END LOOP;
END;
도움이 되었으면합니다.
이제 Management Studio 2016으로 더 쉬워졌습니다.
SQL Server Management Studio 사용
한 테이블에서 다른 테이블로 데이터를 복사하려면
1. 테이블을 마우스 오른쪽 단추로 클릭 한 다음 디자인 을 클릭하여 복사 할 열과 복사 할 열이있는 테이블을 엽니 다 .
2. 복사 할 열이있는 테이블의 탭을 클릭하고 해당 열을 선택합니다.
3. Edit 메뉴에서 Copy를 클릭합니다 .
4. 새 쿼리 편집기 창을 엽니 다.
5. Query Editor를 마우스 오른쪽 버튼으로 클릭 한 다음 Design Query in Editor 를 클릭 합니다.
6. 테이블 추가 대화 상자에서 원본 및 대상 테이블을 선택하고 추가를 클릭 한 다음 테이블 추가 대화 상자 를 닫습니다 .
7. 쿼리 편집기의 빈 영역을 마우스 오른쪽 단추로 클릭하고 유형 변경 을 가리킨 다음 결과 삽입 을 클릭 합니다.
8. Choose Target Table for Insert Results 대화 상자에서 대상 테이블을 선택합니다.
9. Query Designer 상단에서 소스 테이블의 소스 열을 클릭합니다.
10. 이제 쿼리 디자이너가 INSERT 쿼리를 생성했습니다. 확인을 클릭하여 쿼리를 원래 쿼리 편집기 창에 배치합니다.
11. 쿼리를 실행하여 원본 테이블의 데이터를 대상 테이블에 삽입합니다.
다른 속성을 사용하여 해결할 수 있습니다.