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

Kev*_*ven 28 sql sql-server sql-update

我正在尝试使用在TYPE2中找到的值覆盖TYPE1中的值.

我写了一个小提琴试试,但由于某种原因,它没有更新.

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

我在TYPE1中的值没有更新的原因是什么?

Spa*_*rky 44

这适合我

select * from stuff

update stuff
set TYPE1 = TYPE2
where TYPE1 is null;

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

select * from stuff
Run Code Online (Sandbox Code Playgroud)

  • @Keven是的,每个SQLFiddle执行都独立于上一次运行. (2认同)

小智 25

UPDATE a
SET a.column1 = b.column2
FROM myTable a 
INNER JOIN myTable b
on a.myID = b.myID
Run Code Online (Sandbox Code Playgroud)

为了使"a"和"b"都起作用,必须定义两个别名

  • 接受的答案有效,但这更直接,更切题 (2认同)
  • 实际上,上面的示例回答了这个问题,因为如果仔细看一下,“ myTable”被两次引用,则JOIN与FROM语句在同一表上完成。只是比接受的答案更为冗长。 (2认同)
  • 这无疑是最好的答案。当您在列中获取数据并在放入另一列之前对其进行操作时,这非常有用。例如,我要取出 PART_NUMBER 列并从中删除破折号,然后将其放入 MOD_PART_NUMBER 中。做到这一点的最好方法! (2认同)

Győ*_*dor 15

UPDATE TABLE_NAME SET COLUMN_A = COLUMN_B;
Run Code Online (Sandbox Code Playgroud)

更容易.至少在Oracle SQL上,我不知道这是否适用于其他方言.

  • 是的,也适用于 SQL Server(因此您的回答对这个问题完全有效)。 (2认同)