CREATE table temporary_table AS SELECT * FROM original_table WHERE Event_ID="155";
UPDATE temporary_table SET Event_ID="120";
UPDATE temporary_table SET ID=NULL;
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table;
一般方案代码:
CREATE table temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
UPDATE temporary_table SET <auto_inc_field>=NULL;
INSERT INTO original_table SELECT * FROM temporary_table;
DROP TABLE temporary_table
简化/压缩代码:
CREATE TEMPORARY TABLE temporary_table AS SELECT * FROM original_table WHERE <conditions>;
UPDATE temporary_table SET <auto_inc_field>=NULL, <fieldx>=<valuex>, <fieldy>=<valuey>, ...;
INSERT INTO original_table SELECT * FROM temporary_table;
SELECT *
INTO #Temp
FROM Table WHERE Event_ID = "120"
UPDATE #TEMP
SET Column = "Changed"
ALTER TABLE #TEMP DROP COLUMN Table_PK
EXEC sp_executesql N'INSERT INTO Table SELECT * FROM #Temp'
8条答案
按热度按时间kr98yfug1#
这里,col2,...表示表中的其余列(**Event_ID以外的列)。
ftf50wuq2#
如果您的表中有许多字段,并且不想在键入所有字段时手指抽筋,则只需键入所需的字段即可:)
如何将一些行复制到同一个表中,其中一些字段具有不同的值:
1.创建包含所有要复制的行的临时表
1.使用所需的值更新临时表中的所有行
1.如果有自动增量字段,则应在临时表中将其设置为NULL
1.将临时表中的所有行复制到原始表中
1.删除临时表
您的密码:
一般方案代码:
简化/压缩代码:
由于临时表的创建使用了
TEMPORARY
关键字,因此会话结束时会自动删除该表(如@ar34z所建议)。8cdiaqws3#
假设您的表还有另外两列:餐饮酒吧
epggiuax4#
如果您的表中有很多列,并且不想键入每一列,则可以使用临时表来完成,例如;
4uqofj5v5#
嘿,复制所有字段,将其中一个字段更改为相同的值+其他内容如何?
??????????
ocebsuys6#
只要Event_ID为整数,请执行以下操作:
qaxu7uf27#
加上@DaveTheBFG的回答:如果您有标识列(以下示例中的“Table_PK”),INSERT行将失败,但您可以执行以下操作(特定于SQL Server,但此概念可能适用于其他数据库):
jvidinwx8#
如果你不介意在你的代码中做,这会更容易。例如,在php中你可以做
使用函数是可选的。我这样做是因为我需要这样做几次。我使用这个选项是因为现在如果数据库列在未来发生变化,我可以忘记它。