Chcę skopiować dane z jednej kolumny do innej kolumny innej tabeli. Jak mogę to zrobić?
Próbowałem następujących rzeczy:
Update tblindiantime Set CountryName =(Select contacts.BusinessCountry From contacts)
ale to nie zadziałało.
Chcę skopiować kolumnę „BusinessCountry” tabeli kontaktów do kolumny „CountryName” tabeli tblindiantime.
Odpowiedzi:
W SQL Server 2008 można użyć aktualizacji wielotabelowej w następujący sposób:
UPDATE tblindiantime SET tblindiantime.CountryName = contacts.BusinessCountry FROM tblindiantime JOIN contacts ON -- join condition here
Potrzebujesz warunku łączenia, aby określić, który wiersz powinien zostać zaktualizowany.
Jeśli tabela docelowa jest obecnie pusta, powinieneś zamiast tego użyć INSERT:
INSERT INTO tblindiantime (CountryName) SELECT BusinessCountry FROM contacts
źródło
Tutaj zapytanie:
Ta sama tabela:
UPDATE table_name SET column1 = column2
Inny stół:
UPDATE table_name1 SET column1 = ( SELECT column2 FROM table_name2 WHERE table_name1.id = table_name2.id );
źródło
Table2.Column2 => Table1.Column1
Zdaję sobie sprawę, że to pytanie jest stare, ale zaakceptowana odpowiedź nie zadziałała. W przypadku przyszłych pracowników Google to zadziałało:
UPDATE table1 SET column1 = ( SELECT column2 FROM table2 WHERE table2.id = table1.id );
W wyniku czego:
źródło
[Michael Pakhantsov]
Mam nadzieję, że masz pole klucza to dwie tabele.
UPDATE tblindiantime t SET CountryName = (SELECT c.BusinessCountry FROM contacts c WHERE c.Key = t.Key )
źródło
ORA-01427: single-row subquery returns more than one row
jeśli select zwróci więcej niż jeden wiersz, co jeśli chcę wybrać więcej niż jeden wiersz i zaktualizować kolumnę tymi wartościami?WHERE
. Na przykład, jeśli tblindiantime ma poleContactID
, które jestID
wierszem, docontacts
którego należy każdy wiersz w tblindiantime, należy użyćWHERE tblindiantime.ContactID=contacts.ID
. Zobacz odpowiedź cedrikdlb na inną odmianę.Odpowiedź podobnego pytania zadziałała dla mnie bardziej poprawnie niż wybrana odpowiedź na to pytanie (autorstwa Marka Byersa). Korzystając z odpowiedzi Marka, moja zaktualizowana kolumna otrzymała tę samą wartość we wszystkich wierszach (być może wartość z pierwszego wiersza, który pasował do sprzężenia). Użycie odpowiedzi ParveenaArora z innego wątku zaktualizowało kolumnę poprawnymi wartościami.
Przekształcając rozwiązanie Parveeny, aby używać nazw tabel i kolumn tego pytania, zapytanie wyglądałoby następująco (gdzie zakładam, że tabele są powiązane przez tblindiantime.contact_id):
UPDATE tblindiantime SET CountryName = contacts.BusinessCountry FROM contacts WHERE tblindiantime.contact_id = contacts.id;
źródło
Myślę, że wszystkie poprzednie odpowiedzi są poprawne, poniższy kod jest bardzo ważny, szczególnie jeśli musisz zaktualizować wiele wierszy na raz, uwaga: to 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;
Chciałbym, żeby to pomogło.
źródło
Teraz jest łatwiej z Management Studio 2016.
Korzystanie z programu SQL Server Management Studio
Aby skopiować dane z jednej tabeli do drugiej
1. Otwórz tabelę z kolumnami, które chcesz skopiować, i tę, do której chcesz skopiować, klikając tabele prawym przyciskiem myszy, a następnie klikając polecenie Projektuj .
2. Kliknij kartę tabeli z kolumnami, które chcesz skopiować, i wybierz te kolumny.
3. W menu Edycja kliknij Kopiuj .
4. Otwórz nowe okno Edytora zapytań.
5. Kliknij prawym przyciskiem myszy Query Editor, a następnie kliknij Design Query w Edytorze .
6. w oknie dialogowym Dodaj tabelę wybierz tabelę źródłową i docelową, kliknij przycisk Dodaj , a następnie zamknij okno dialogowe Dodaj tabelę .
7. Kliknij prawym przyciskiem myszy otwarty obszar Edytora zapytań, wskaż polecenie Zmień typ , a następnie kliknij polecenie Wstaw wyniki .
8. w oknie dialogowym Wybierz tabelę docelową dla wyników wstawiania wybierz tabelę docelową.
9. W górnej części projektanta zapytań kliknij kolumnę źródłową w tabeli źródłowej.
10. Projektant zapytań utworzył teraz zapytanie INSERT. Kliknij przycisk OK, aby umieścić zapytanie w oryginalnym oknie Edytora zapytań.
11. Wykonaj zapytanie, aby wstawić dane z tabeli źródłowej do tabeli docelowej.
Aby uzyskać więcej informacji, https://docs.microsoft.com/en-us/sql/relational-databases/tables/copy-columns-from-one-table-to-another-database-engine
źródło
Można to rozwiązać, używając innego atrybutu.
źródło