我试图用在TYPE2中找到的值覆盖在TYPE1中找到的值。SQL Server-从同一个表中的一列更新值到另一个
我写了一个小提琴来尝试它,但由于某种原因它没有更新。
http://www.sqlfiddle.com/#!3/a4733/17
任何原因,我在TYPE1值没有更新?
我试图用在TYPE2中找到的值覆盖在TYPE1中找到的值。SQL Server-从同一个表中的一列更新值到另一个
我写了一个小提琴来尝试它,但由于某种原因它没有更新。
http://www.sqlfiddle.com/#!3/a4733/17
任何原因,我在TYPE1值没有更新?
这对我的作品
select * from stuff
update stuff
set TYPE1 = TYPE2
where TYPE1 is null;
update stuff
set TYPE1 = TYPE2
where TYPE1 ='Blank';
select * from stuff
在更新查询之前放置了选择查询,因此您只能看到初始数据。将select * from stuff;
放到列表的末尾。
你的SELECT语句是更新语句之前 看到Updated fiddle
UPDATE a
SET a.column1 = b.column2
FROM myTable a
INNER JOIN myTable b
on a.myID = b.myID
为了两个 “A” 和 “B” 的工作,这两个别名必须被定义为
UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;
更容易。至少在Oracle SQL上,我不知道这是否适用于其他方言。
是的,也适用于SQL Server(所以你的回答对于这个问题是完全有效的)。 – 2018-02-09 10:30:51
我得到错误:子查询返回了超过1个值。当子查询遵循=,!=,<, <= , >,> =或当子查询用作表达式时,这是不允许的。 – 2018-02-21 17:04:15
是的,你说得对。但是在运行一次update语句之后,我会再次运行select语句......但是没有改变。每次运行后有没有新的小提琴实例? – Keven 2013-04-23 23:11:44
@Keven是的,每个SQLFiddle执行独立于上一次运行。 – 2013-04-24 00:06:21