Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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
Sql server 插入到带有where条件的表中_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql server 插入到带有where条件的表中

Sql server 插入到带有where条件的表中,sql-server,sql-server-2012,Sql Server,Sql Server 2012,我有两张桌子 表1 OfficeID OfficeName ------------------- 1 UK 2 JP 3 US1 4 US2 5 US3 6 US4 OfficeID是一个标识自

我有两张桌子

表1

            OfficeID  OfficeName
            -------------------
            1          UK
            2          JP
            3          US1
            4          US2
            5          US3
            6          US4
OfficeID
是一个标识自动递增列

我需要在
表1
中添加几个办公室(如US5、US6):

insert into  Table1 (OfficeName) 
values ('US5'), ('US6')
我还有一张桌子

            OrgID   OfficeID
            ---------------- 
            1            1
            2            2 
            3            3
            3            4
            3            5
            3            6  
插入US5和US6后,表1中的新数据将

            OfficeID  OfficeName
            -------------------
            1          UK
            2          JP
            3          US1
            4          US2
            5          US3
            6          US4
            7          US5
            8          US6
在此之后,我想在表2中插入
officeID
,以便我的表2如下所示:

            OrgID   OfficeID
            ---------------- 
            1            1
            2            2 
            3            3
            3            4
            3            5
            3            6 
            3            7
            3            8
下面是我如何做到这一点的

insert into Table2 (OfficeID) 
    select OfficeID 
    from table1 
    where OfficeID in ((7), (8))
      and table2.OrgID = 3

如何做到这一点?谢谢

您应该定义要插入的所有列:

         insert into Table2  (OfficeID, OrgID) 
         select OfficeID, 3 from table1 where OfficeID in ((7),(8))

您应该定义要插入的所有列:

         insert into Table2  (OfficeID, OrgID) 
         select OfficeID, 3 from table1 where OfficeID in ((7),(8))

如果要将标识列插入表2中,请尝试使用
OUTPUT
子句

Insert into Table1 (OfficeName)
    OUTPUT inserted.OfficeID, 3 INTO Table2  (OfficeID, OrgID) 

values
('US5'),
('UK6')
go


如果要将标识列插入表2中,请尝试使用
OUTPUT
子句

Insert into Table1 (OfficeName)
    OUTPUT inserted.OfficeID, 3 INTO Table2  (OfficeID, OrgID) 

values
('US5'),
('UK6')
go


尝试对表2进行内部联接,因为您正在尝试按表2上的列进行筛选,并且在select语句中不可访问,请尝试以下操作

 INSERT INTO Table2  (OfficeID) 
 SELECT OfficeID FROM table1 INNER JOIN table2 ON (CLAUSE) WHERE table1.OfficeID in ((7),(8))
 AND   table2.OrgID=3

尝试对表2进行内部联接,因为您正在尝试按表2上的列进行筛选,并且在select语句中不可访问,请尝试以下操作

 INSERT INTO Table2  (OfficeID) 
 SELECT OfficeID FROM table1 INNER JOIN table2 ON (CLAUSE) WHERE table1.OfficeID in ((7),(8))
 AND   table2.OrgID=3

你收到错误消息了吗?有什么问题吗?您的意思是
Insert into table 2(OrgId,OfficeId)SELECT 3,7 UNION SELECT 3,8
?对于新插入的行,
OrgId
是基于什么逻辑的?错误:无法绑定多部分标识符OrgId。是否收到错误消息?有什么问题吗?您的意思是
Insert into table 2(OrgId,OfficeId)SELECT 3,7 UNION SELECT 3,8
?什么是
OrgId
是根据新插入行的
3
逻辑引用的?错误:无法绑定多部分标识符OrgId。您的join没有on子句。这在当前发布时完全无效。您的加入没有ON子句。这是完全无效的,因为目前发布。