将同一表中一列的值更新为SQL Server中另一列的值

xurqigkl  于 2022-12-17  发布在  SQL Server
关注(0)|答案(9)|浏览(306)

我正在尝试用在TYPE2中找到的值覆盖在TYPE1中找到的值。
我写了这个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
为什么类型1中的值没有更新?

k3fezbri

k3fezbri1#

这对我有用

select * from stuff

update stuff
set TYPE1 = TYPE2
where TYPE1 is null;

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

select * from stuff
pbwdgjma

pbwdgjma2#

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

为了使“a”和“b”都能工作,必须定义这两个别名

c8ib6hqw

c8ib6hqw3#

UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;

简单多了,至少在Oracle SQL上是这样,我不知道这是否也适用于其他方言。

gxwragnw

gxwragnw4#

你把选择查询放在更新查询之前,所以你只看到初始数据。把select * from stuff;放在列表的末尾。

e37o9pze

e37o9pze5#

这个答案是关于从同一个表中另一列的一部分更新列的。

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;
xdyibdwo

xdyibdwo6#

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

oipij1gg7#

您的select语句在update语句之前,请参阅Updated fiddle

s6fujrry

s6fujrry8#

UPDATE `tbl_user` SET `name`=concat('tbl_user.first_name','tbl_user.last_name') WHERE student_roll>965
bis0qfac

bis0qfac9#

如果需要对特定列进行操作:
update courses set hours = days * 5

相关问题