sql – 如何在不指定列名的情况下从另一个表更新一个表?
|
我有两个表具有相同的结构和非常大的字段数(约1000).我需要执行2次操作
INSERT INTO [1607348182] SELECT * FROM _tmp_1607348182; 2)从第二个表更新第一个表 查询如下: Update [1607348182] set [1607348182].* = tmp.* from [1607348182] inner join _tmp_1607348182 as tmp on tmp.recordid = [1607348182].recordid 要么 Update [1607348182] from [1607348182] inner join _tmp_1607348182 as tmp on tmp.recordid = [1607348182].recordid 无效. 解决方法不确定是否能够在不使用动态sql在变量中构建update语句的情况下完成此操作.此语句将根据您输入的表名返回列的列表: select name from syscolumns where [id] = (select [id] from sysobjects where name = 'tablename') 不确定我是否可以在这里避免循环….你需要将上面的结果加载到游标中,然后从中构建一个查询. Psuedo编码: set @query = 'update [1607348182] set ' load cursor --(we will use @name to hold the column name) while stillrecordsincursor set @query = @query + @name + ' = tmp_[1607348182]. ' +@name + ',' load next value from cursor loop! 在循环中构建查询完成后,使用exec sp_executesql @query. 只是一点警告……在这样的循环中构建动态sql会让人感到有些困惑.对于故障排除,在循环中选择@query并观察@query是否构建. 编辑: 另一种选择是使用excel来大规模构建它.列是否选择并将结果复制到电子表格的a列中.把’=放在b栏中,tmp.[12331312]在列c中,将列a复制到列D中,将逗号复制到列e中.将整个电子表格复制到记事本中,您应该为您构建更新语句的列.如果这是一次性事件并不是一个糟糕的解决方案,不确定我是否依赖于此作为一个持续的解决方案. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- SQL Server 简单的SQL 行列转换语句
- sql-server – 如何在SQL Server Management Stu
- sql-server – 如何从SQL Server 2005中的MDF恢复
- sql-server – 将带有’YYYYMMDDHHMMSS’格式的字
- sql-server – 什么时候动态端口“动态”?
- 将退回邮件记录到数据库(具有虚拟域/用户的Postf
- sql – 使用多列主键的优点和缺点是什么?
- SQLServer 使用ADSI执行分布式查询ActiveDorecto
- sql-server – 在TableField中自动添加当前DateT
- SQL Server 表结构修改方法
