【问题标题】:Copy table and add new first column with value in MySQL复制表并在 MySQL 中添加具有值的新第一列
【发布时间】:2018-08-30 00:30:23
【问题描述】:

我想创建一个带有值的新列的 MySQL 表。以下为原表:

Column A B C
Value1 1 2 3
Value2 4 5 6

复制后的新表是这样的,新的列在表的开头:

Column A' A B C
Value1 1  1 2 3
Value2 1  4 5 6

由于新列是第一列并且填充了值而不是 NULL,因此我不能只插入旧表中的所有内容或创建旧表。我怎样才能做到这一点?谢谢!

【问题讨论】:

  • 新列的值从何而来?总是1
  • 新列的值是复制时自己赋值的
  • 更重要的问题是是否每一行都一样。如果不是,那么副本应该如何知道每一行的代码是什么?
  • 是的。新列的每一行都将具有相同的值。

标签: mysql sql insert mariadb create-table


【解决方案1】:

您可以将新值作为文字放入从旧表中获取数据的SELECT 语句中。

CREATE TABLE newTable ( /* column specifications here */ ) AS
SELECT 1, oldTable.*
FROM oldTable

【讨论】:

  • 如果您使用1 as Aprime或类似的东西,则不需要列规范。
  • @GordonLinoff 我最初是这么写的,但后来决定让新列的数据类型默认是个坏主意。
  • 。 .我认为默认值很好,至少对于基本类型来说是这样,因为它与旧表中的相同(当然可空性不会转移)。
猜你喜欢
  • 2021-03-29
  • 1970-01-01
  • 2021-02-08
  • 2020-08-26
  • 1970-01-01
  • 2022-01-26
  • 2017-10-24
  • 2021-01-29
  • 2022-01-27
相关资源
最近更新 更多