web-dev-qa-db-fra.com

Mettre à jour les valeurs d'une colonne de la même table à une autre dans SQL Server

J'essaie d'écraser des valeurs trouvées dans TYPE1 avec des valeurs trouvées dans TYPE2.

J'ai écrit ce code SQL pour l'essayer, mais pour une raison quelconque, il n'est pas mis à jour:

select * from stuff

update stuff
set TYPE1 = TYPE2
where TYPE1 is null;

update stuff
set TYPE1 = TYPE2
where TYPE1 ='Blank';

http://www.sqlfiddle.com/#!3/a4733/17

Une raison pour laquelle mes valeurs dans TYPE1 ne sont pas mises à jour?

28
Keven

Ça marche pour moi

select * from stuff

update stuff
set TYPE1 = TYPE2
where TYPE1 is null;

update stuff
set TYPE1 = TYPE2
where TYPE1 ='Blank';

select * from stuff
44
Sparky
UPDATE a
SET a.column1 = b.column2
FROM myTable a 
INNER JOIN myTable b
on a.myID = b.myID

pour que "a" et "b" fonctionnent, les deux alias doivent être définis

22
Bob Taylor
UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;

Beaucoup plus facile. Au moins sur Oracle SQL, je ne sais pas si cela fonctionne également sur d’autres dialectes.

12
Győri Sándor

Vous mettez la requête select avant les requêtes de mise à jour, de sorte que vous ne voyez que les données initiales. Mettez select * from stuff; jusqu'à la fin de la liste.

2
Jack

Cette réponse concerne la mise à jour d'une colonne à partir d'une partie d'une autre colonne de la même table.

update T1
set domainname = (New value) --Example: (SELECT LEFT(TableName.col, CHARINDEX('@',TableName.col)-1) STRIPPED_STRING FROM TableName where TableName.col = T2.Emp_ID)
from TableName T1
INNER JOIN
    TableName T2
ON 
    T1.ID= T2.ID;

Votre instruction select était avant l'instruction update, voir Violon mis à jour

1
Ian Kenney
update TABLE_1 a set COLUMN_1 = (select COLUMN_2 from TABLE_1 b where a.ID = b.ID)
0
Tarek.Iraqi