2010-12-13 38 views
3

Je suis en train d'écrire une requête dans ce sens:Est-il possible d'utiliser la même table deux fois dans une instruction de mise à jour?

UPDATE Table i2 
SET value = 0 
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1) 

Le problème est que je suis en train de « syntaxe incorrecte près de « i2 ». » Je suppose que c'est parce qu'il n'aime pas donner un pseudo à une table en cours de mise à jour, mais si c'est le cas, comment suis-je censé le référencer?

Répondre

6

Une mise à jour ne doit pas seulement être sur une table directement, vous pouvez utiliser un alias d'une table référencée dans la clause From.

UPDATE i2 
SET value = 0 
FROM Table i2 
WHERE EXISTS (SELECT 1 FROM Table i1 WHERE i2.ID = i1.ID+1) 
0

La « valeur » dans la clause « SET » est un mot-clé de SQL.Further, votre logique semble effacer tous les s « valeur », sauf la première ligne, est votre objectif?

+0

Ceci est une simplification de cette requête réelle. "value" était une colonne. Il y avait aussi des contraintes supplémentaires qui faisaient "tout sauf le premier de chaque set". – Margaret