2013-06-19 48 views
0

我想表2值插入到表1拿一个表中的值,并将其插入到另一个表

我的表

表1

 Month Gender State Load  DepartmentID DeptName Count1 Count2 Count3 
     Jan Male  va FullTime 100   HR   2  0  1 
     Jan Male  VA PartTime 100   HR   1  3  13 
     Jan Female  Va FullTime 100   HR   2  1  21 
     Jan Female  VA PartTime 100   HR   0  0  0 

表2

 Month Gender State Load  DepartmentID DeptName Count1 Count2 Count3 
     Jan Male  va FullTime 220   Mhrm   2  0  1 
     Jan Male  VA PartTime 220  Mhrm   1  3  13 
     Jan Female  Va FullTime 220  Mhrm   2  1  21 
     Jan Female  VA PartTime 220   Mhrm   0  0  0 

table1有更多的值....但我试图在表1中添加部门ID 220和部门名称Mhrm。我该如何实现这一目标?

编辑:

以上表不直接表,但夫妇的意见和很多条件相结合。我想知道如何动态组合,而无需更改表上的任何数据。

+1

** ** DepartamentID是**身份**字段?因为如果它不是,那么你应该做以下查询:** INSERT INTO TABLE2(FIELD1,...,FIELDN)SELECT FIELD1,...,FIELDN FROM TABLE1 **。 –

+0

你也可以在合并功能的标志http://technet.microsoft.com/en-us/library/bb510625.aspx – christiandev

+0

我曾尝试过工会和工会的所有,它的作品,但这并不完全是我在看。 –

回答

1
INSERT INTO table1 
SELECT * FROM table2; 
+3

指定列名称要好上百万倍。该查询不仅假定列名相同,而且列的顺序也是相同的。这是一个长期的灾难处方。 –

+0

请小心,因为如果** DepartmentID **是标识字段,则此查询将不起作用。在这种情况下,您应该启用** indentity_insert **模式。 –

+0

感谢您的警告。如果没有关于OP的更多信息,我更愿意选择最简单的解决方案,假设如果答案不满足他的需求,OP将提供更多信息。 –

3

假设DepartamentID不是一个标识字段,尝试此查询:

INSERT INTO TABLE2(FIELD1,...,FIELDN) 
    SELECT FIELD1,...,FIELDN FROM TABLE1. 

否则,你应该运行在此之前:

set identity_insert TABLE2 ON 
    --INSERT QUERY 
    set identity_insert TABLE2 OFF 
+0

只是好奇......你为什么认为DepartmentId将是一个身份领域。如果它是一个标识列,我希望看到每行不同的值。 –

+0

@Gastros:Ups,你说得对,对不起。我想当我读到问题的第一行时。在这种情况下,DepartamentID不是身份字段。 –

相关问题