Обновить значения из одного столбца в той же таблице в другой в SQL Server

Я пытаюсь перезаписать значения, найденные в TYPE1, значениями, найденными в TYPE2.

Я написал этот SQL, чтобы попробовать его, но по какой-то причине он не обновляется:

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

Любая причина, почему мои значения в TYPE1 не обновляются?

Ответ 1

Это работает для меня

select * from stuff

update stuff
set TYPE1 = TYPE2
where TYPE1 is null;

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

select * from stuff

Ответ 2

UPDATE a
SET a.column1 = b.column2
FROM myTable a 
INNER JOIN myTable b
on a.myID = b.myID

чтобы работать как "a", так и "b", должны быть определены оба псевдонима

Ответ 3

UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;

Намного легче. По крайней мере, на Oracle SQL, я не знаю, работает ли это на других диалектах.

Ответ 4

Вы отправляете запрос выбора перед запросами обновления, поэтому вы просто видите исходные данные. Поместите select * from stuff; в конец списка.

Ответ 5

Это ответ об обновлении столбца из части другого столбца в той же таблице.

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;

Ответ 7

update TABLE_1 a set COLUMN_1 = (select COLUMN_2 from TABLE_1 b where a.ID = b.ID)