如何在同一个表中将数据从一列复制到另一列?

jon*_*ney 215 sql

对于SQL中表中的所有记录,是否可以将数据从A列复制到B列?

Ash*_*nko 400

这个怎么样

UPDATE table SET columnB = columnA;
Run Code Online (Sandbox Code Playgroud)

这将更新每一行.

  • 这显示了声明性语言的力量!我们大多数人都非常熟悉命令式编程语言,以至于忘记了简单性。 (4认同)
  • 我认为答案很简单时,在一些复杂的过程中会在每个记录处循环 (3认同)
  • 如果您想将旧值转移到其他列并更新第一个列,这也将起作用:`UPDATE table SET columnA = 'new value', columnB = columnA`。就像其他答案所说 - 不要忘记 WHERE 子句只更新需要的内容。 (2认同)

小智 77

UPDATE table_name SET
    destination_column_name=orig_column_name
WHERE condition_if_necessary
Run Code Online (Sandbox Code Playgroud)

  • @Mark,这实际上是有道理的,为什么这会被贬低?我有一种情况需要将日期值从一列复制到其他列,它只适用于某些列,而不是全部.所以在声明中有一个WHERE是必要的. (9认同)
  • 需要where子句,谢谢 (8认同)
  • 这与旧的接受答案有何不同? (7认同)
  • @finnTheHuman问题是如何"复制所有记录中的数据",前面的答案正确答案,所以这不会添加任何内容 (5认同)
  • @Mark"这与旧的接受答案有何不同",它有一个WHERE子句."所以这不会增加任何东西",我不同意,它增加了一些东西.包含WHERE子句IF NECESSARY是一个很好的观点.我们应该对downvoting答案负责.仇恨gon'讨厌 (4认同)

小智 5

如果未启用安全模式,这将更新该列中的所有行。

UPDATE table SET columnB = columnA;

如果启用了安全模式,那么您将需要使用 where 子句。我使用主键大于0基本上都会更新

UPDATE table SET columnB = columnA where table.column>0;