Czy istnieje sposób aktualizowania wielu kolumn w programie SQL Server w taki sam sposób, jak używana jest instrukcja wstawiania?
Coś jak:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Lub coś takiego, a nie tak:
update table set a=t2.a,b=t2.b etc
co może być dość męczące, jeśli masz ponad 100 kolumn.
Odpowiedzi:
„Męczący sposób” to standardowy SQL i sposób, w jaki robią to popularne RDBMS.
Przy ponad 100 kolumnach najprawdopodobniej masz problem z projektowaniem ... ponadto istnieją metody łagodzące w narzędziach klienta (np. Generowanie instrukcji UPDATE) lub za pomocą ORMów
źródło
Spróbuj tego:
To powinno działać w większości dialektów SQL, z wyjątkiem Oracle.
I tak - to dużo pisania - tak robi to SQL.
źródło
Update table1 set (a,b,c) = (select x,y,x)
Składni przykładem zastosowania konstruktorzy rząd wartości, Oracle umożliwia to , MSSQL nie. ( Połącz element )źródło
Twoje zapytanie jest prawie poprawne. T-SQL do tego to:
źródło
Składnia
Przykład
źródło
Możesz tego spróbować
źródło
Próbowałem w ten sposób i działa dobrze:
źródło
tutaj jest taki, który działa:
wartość to kolumna z tabeli_2
źródło
Jeśli musisz wpisać to ponownie kilka razy, możesz zrobić tak, jak kiedyś. Umieść nazwy kolumn w wierszach w arkuszu programu Excel (zapisz na końcu nazwy każdej kolumny (=), co jest łatwe w notatniku ++) po prawej stronie utwórz kolumnę do skopiowania i wklejania wartości, która będzie odpowiadać nowym wpisom w każda kolumna. Następnie po prawej stronie w niezależnej kolumnie umieść przecinki zgodnie z projektem
Następnie za każdym razem będziesz musiał skopiować swoje wartości do środkowej kolumny, a następnie po prostu wkleić i uruchomić
Nie znam prostszego rozwiązania
źródło
Chciałbym się z Tobą podzielić, jak odpowiadam na tego rodzaju pytania. Mój przypadek jest nieco inny, ponieważ wynik z tabeli 2 jest dynamiczny, a numery kolumn mogą być mniejsze niż w tabeli 1. Ale koncepcja jest taka sama.
Najpierw uzyskaj wynik tabela2.
Następnie cofnij obrót.
Następnie napisz zapytanie aktualizacyjne za pomocą dynamicznego SQL. Przykładowy kod jest napisany do testowania 2 prostych tabel - tblA i tblB
PRINT @TSQL
wynik:źródło
Zrobiłem to w MySql i zaktualizowałem wiele kolumn w jednym rekordzie, więc spróbuj tego, jeśli używasz MySql jako serwera:
Jednak kodowałem w vb.net używając serwera MySql, ale możesz zabrać go do swojego ulubionego języka programowania, o ile używasz MySql jako serwera.
źródło
http://www.w3schools.com/sql/sql_update.asp
źródło
źródło