web-dev-qa-db-ja.com

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の値が更新されない理由は何ですか?

28
Keven

これは私のために働く

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

「a」と「b」の両方が機能するためには、両方のエイリアスを定義する必要があります

22
Bob Taylor
UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;

はるかに簡単です。少なくともOracle SQLでは、これが他の方言でも機能するかどうかはわかりません。

12
Győri Sándor

更新クエリの前に選択クエリを置くため、初期データのみが表示されます。 select * from stuff;リストの最後まで。

2
Jack

同じテーブル内の別の列の一部から列を更新することに関するこの回答。

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;

選択ステートメントは、更新ステートメントの前にありました 更新されたフィドル

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