Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 将某些列的数据复制到具有不同值的相同表中_Mysql_Sql - Fatal编程技术网

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';