Existe-t-il un moyen de mettre à jour plusieurs colonnes dans SQL Server de la même manière qu'une instruction insert?
Quelque chose comme:
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
Ou quelque chose comme ça, plutôt que comme ça:
update table set a=t2.a,b=t2.b etc
ce qui peut être assez fastidieux à écrire si vous avez plus de 100 colonnes.
La "méthode fastidieuse" est le SQL standard et comment le SGBDR traditionnel le fait.
Avec plus de 100 colonnes, vous avez probablement un problème de conception. De plus, il existe des méthodes d'atténuation dans les outils clients (par exemple, les instructions de génération UPDATE) ou en utilisant des ORM.
Essaye ça:
UPDATE table1
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id
Cela devrait fonctionner dans la plupart des dialectes SQL, à l'exclusion d'Oracle.
Et oui - c'est beaucoup de frappe - c'est la façon dont SQL le fait.
La syntaxe Update table1 set (a,b,c) = (select x,y,x)
est un exemple d'utilisation de constructeurs de valeur de ligne, Oracle le prend en charge , MSSQL ne le fait pas. ( élément de connexion )
Votre requête est presque correcte. Le T-SQL pour cela est:
UPDATE Table1
SET Field1 = Table2.Field1,
Field2 = Table2.Field2,
other columns...
FROM Table2
WHERE Table1.ID = Table2.ID
Syntaxe
UPDATE table-name
SET column-name = value, column-name = value, ...
WHERE condition
Exemple
UPDATE school
SET course = 'mysqli', teacher = 'Tanzania', student = 'you'
WHERE id = 6
UPDATE t1
SET
t1.a = t2.a,
t1.b = t2.b,
.
.
.
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id=t2.id
Tu peux essayer ça
J'ai essayé avec ce moyen et ça fonctionne bien:
UPDATE
Emp
SET
ID = 123,
Name = 'Peter'
FROM
Table_Name
en voici un qui fonctionne:
UPDATE `table_1`
INNER JOIN
`table_2` SET col1= value, col2= val,col3= val,col4= val;
valeur est la colonne de la table_2
Si vous avez besoin de ressaisir cela plusieurs fois, vous pouvez faire comme je l'ai fait une fois. Obtenez les noms de vos colonnes en rangées dans la feuille Excel (écrivez à la fin de chaque nom de colonne (=, ce qui est facile dans Notepad ++)) à droite, créez une colonne pour copier-coller votre valeur qui correspondra aux nouvelles entrées de chaque colonne. Ensuite, à droite dans une colonne indépendante, mettez les virgules comme prévu
Ensuite, vous devrez copier vos valeurs dans la colonne du milieu à chaque fois, puis simplement coller, puis exécuter
Je ne connais pas de solution plus facile