【问题标题】:MySQL: Insert one column data to anotherMySQL:将一列数据插入另一列
【发布时间】:2021-09-23 20:38:49
【问题描述】:

我不太擅长 MySQL。但是想稍微改进一下,以便能够在没有服务器端语言的情况下操作表格。

我有一张桌子和两列。我需要从一列中选择数据并插入到与行相同的表中。

据我了解,我需要选择此列数据,将其保存在临时表或变量中,然后遍历结果并插入它们。但我不知道该怎么做。

谁能帮忙举个简单的例子。

谢谢 ;)


我的桌子:

id | col1 | col2
-----------------
1  | txt  |  txt4
2  | txt2 |  txt5
3  | txt3 |  txt6

我需要合并 col1 和 col2。

最终结果:

 id | col1
-----------
 1  |  txt
 2  |  txt2
 3  |  txt3
 4  |  txt4
 5  |  txt5
 6  |  txt6

【问题讨论】:

  • 能否发一个初始数据和期望结果的例子,以便我们更好地理解?
  • 只是厌倦了在 php 上写这些废话,而我可以在纯 mysql 上完成... 有人可以推荐一本好书,用于在 mysql cmd 中进行高级数据操作吗?谢谢;)
  • @Beck,我认为 Don 正在寻找的也是一个示例 'After' 表......特别是,您是否希望将它们连接 col2 和 col1?或者您是否希望将 col2 添加为行,并将 col2 值移至 col1?
  • 是的。 "col2 值移至 col1"
  • @Beck 也请告诉我们,正如@Don 和@Dancrumb 所问的那样, 操作完成后表格应该是什么样子。

标签: mysql


【解决方案1】:

这应该可以工作

insert into tablename
(col1_name)
select (col2_name) from tablename;

这将从第 2 列中选择所有数据并将其作为新行插入第 1 列。然后,您可以通过以下方式删除第二列:

alter table tablename drop col2_name;

只需将tablename 替换为您的表名,将列名替换为您的列名。此外,请确保两种列数据类型相互兼容。

祝你好运!

【讨论】:

  • 我希望它可以这么简单:) 在选择附近出现语法错误
  • Ekhm 如果从语句中删除 VALUES。然后它工作。谢了哥们。完美运行! ;) 编辑您的帖子并删除 VALUES,以免其他人感到困惑。
  • -1 会使表tablename 中的行数翻倍,请改用更新。
  • @Johan 我认为这就是 OP 想要的,但最初并不清楚。
  • 这比我尝试的方式容易得多,效果很好。非常感谢!
【解决方案2】:

如果我没看错,你想合并 col1 和 col2 吗?那么,试试这个

alter table table1 add column col3 varchar(255);

update table1 set col3 = concat(col1, " ", col2);

alter table table1 drop column col1;
alter table table1 drop column col2;

【讨论】:

  • +1,但请注意,在严格的 SQL 模式下,您必须在更新语句中有 where 子句。 update table1 set col3 = concat(col1, " ", col2) where id > 0 会成功的。
【解决方案3】:

您可以使用同一张表中的INSERT ... SELECT

【讨论】:

    【解决方案4】:

    我试过了,它对我有用

    update table1 set column2=column1;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-11
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 2018-04-05
      相关资源
      最近更新 更多