【发布时间】:2014-02-26 10:27:11
【问题描述】:
我不确定问这个问题的最佳方法,所以我会通过示例来提问。
我有一个大小合适的数据库,其中包含大约 800 个表,每个表都包含所有数据的关键信息 - 例如,我们将其称为部门。这是这些表的唯一索引的一部分。我需要一个过程来遍历这些表中的每一个,并将当前在一个部门中的所有行复制到新添加的部门的一组新行中。
现在,我想我可以用一个足够简单的表来做到这一点,比如:
SELECT 'new value' as department, field2, field3, field4, field5
INTO myTable
FROM myTable
WHERE department = 'old value';
但是,我试图找到一个懒惰的出路,而不必列出表的所有字段(有些表的字段列表很大)。我希望找到一个简单的语句,可以在每个表上使用并产生相同的结果,而不必列出所有字段(仅在新行中更改的字段)。基本上就像我的第一个语句一样简单 - 除了不必在表中提取所有数千个字段名称:
SELECT 'new value' as department, (magically get all other fields for the specified row in the table)
INTO myTable
FROM myTable
WHERE department = 'old value';
有没有人做过这样的事情?我是否不得不为 800 个表中的每一个手动创建所有字段的列表?
-- 谢谢。
【问题讨论】:
-
*怎么样? 'SELECT 'new value' as department, * INTO myTable FROM myTable WHERE department = 'old value';' -
这是我开始的地方,但很快发现它尝试将 deprtment 字段两次放入表中并收到此错误:S0021(2705)[Microsoft][ODBC SQL Server Driver][SQL Server ]每个表中的列名必须是唯一的
标签: sql sql-server