Mysql 将某些列的数据复制到具有不同值的相同表中
我知道我可以将行复制到同一个表中,同时为需要包含不同值的列指定不同的值,方法是在查询中实际写入所有列名,如下所示:Mysql 将某些列的数据复制到具有不同值的相同表中,mysql,sql,Mysql,Sql,我知道我可以将行复制到同一个表中,同时为需要包含不同值的列指定不同的值,方法是在查询中实际写入所有列名,如下所示: INSERT INTO my_table (col1, col2, col3, col4) SELECT col1, col2, [value_for_col_3], col4 FROM my_table; 其中,[value_for_col_3]是我想要的列col3的原始值。这很好,但是在我的表包含很多列的情况下,
INSERT INTO
my_table (col1, col2, col3, col4)
SELECT
col1,
col2,
[value_for_col_3],
col4
FROM
my_table;
其中,[value_for_col_3]是我想要的列col3的原始值。这很好,但是在我的表包含很多列的情况下,写所有的列名会很麻烦。是否有一种方法可以执行相同的操作,而无需键入表的所有列名,同时仍能为某些列指定不同的值
提前感谢您的帮助。在这个回答中,我给出了一个基本的大纲,而不是写出所有的代码,因为您希望看到您想要的东西是否可以完成。这是一种可行的方法 该方法是获取列的所有名称(不需要的名称除外)的列表,然后在查询中使用这些列名的输出 这显示了如何在SQLServer中选择除某些列以外的所有列,但我确信可以修改语法以在MySQL中工作 从此处的一个答案中复制并粘贴以下代码: 只有SELECT语句
SELECT @query = 'select ' + @cols + ' from MyTable where';
将被修改为insert into语句。您需要单独列出每一列。您可以使用*复制列,但这可能对您没有帮助。因此,没有办法执行我尝试执行的操作?您可以编写一个动态查询,但这会很麻烦,而不是语法上的。但是,如果您不想输入,也不介意查询太长,MySQL Workbench和我确信其他管理程序可以创建标准的详细选择和插入查询字符串,只需右键单击您想要查询的表。
SELECT @query = 'select ' + @cols + ' from MyTable where';