Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 2008 如何在output子句中从两个表中获取列_Sql Server 2008_Output Clause - Fatal编程技术网

Sql server 2008 如何在output子句中从两个表中获取列

Sql server 2008 如何在output子句中从两个表中获取列,sql-server-2008,output-clause,Sql Server 2008,Output Clause,我有两张桌子 TableA (Col1 Pk identity, Col2, Col3) TableB (Col2,Col3, Col4) 现在,我想得到Col1,Col4的组合 我在用这个 INSERT INTO TableA (Col2, Col3) OUTPUT inserted.* SELECT DISTINCT Col2,Col3 FROM TableB 但下面只给出表A中的Col1、Col2和Col3。。如果我没有错的话。这里我要可乐1(表A)和可乐4(表B) 现在,我如何获得表

我有两张桌子

TableA (Col1 Pk identity, Col2, Col3)
TableB (Col2,Col3, Col4)
现在,我想得到Col1,Col4的组合

我在用这个

INSERT INTO TableA (Col2, Col3)
OUTPUT inserted.*
SELECT DISTINCT Col2,Col3
FROM TableB
但下面只给出表A中的Col1、Col2和Col3。。如果我没有错的话。这里我要可乐1(表A)和可乐4(表B) 现在,我如何获得表A中的Col4和受尊敬的标识行

编辑

下面是一个可能对您有所帮助的示例场景

    CREATE TABLE [dbo].[A](
    [Col1] [int] IDENTITY(1,1) NOT NULL,
    [Col2] [varchar](50) NULL,
    [Col3] [varchar](50) NULL,
 CONSTRAINT [PK_A] PRIMARY KEY CLUSTERED 
(
    [Col1] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO

CREATE TABLE [dbo].[B](
    [Col2] [varchar](50) NULL,
    [Col3] [varchar](50) NULL,
    [Col4] [varchar](50) NULL
) ON [PRIMARY]

GO

SET ANSI_PADDING OFF
GO



INSERT INTO A (Col2,Col3)
OUTPUT INSERTED.*
SELECT COL2, Col3, Col4 
FROM B

我能用校验和做吗

这两个表是如何连接的?它们没有连接。。一张桌子是暂存台,另一张桌子在集市上。。它们类似于相同的柱子。。但我不能在表A中插入col4。我想要col1和Col4,你可以用它们做你想做的事情。@MikaelEriksson谢谢你的建议。我已经尝试过这样做,但在这个查询中似乎出现了一些错误,在0=1时使用B作为S合并A作为T,然后插入(T.Col2,T.Col3)值(S.Col2,S.Col3)输出inserted.Col1,S.Col4;删除insert语句的columns规范中的前缀。谢谢,您能指导我如何在此处使用update语句吗?我的意思是,我在source Col1\u Dup中还有一列。。。更新B SET Col1\u Dup=Inserted.Col1,其中Col4=S。Col4@Zerotoinfinite不知道你的意思。你可能应该在一个新问题中问这个问题。
merge A as T 
using B as S 
on 0=1 
when not matched then 
insert (Col2, Col3) values (S.Col2,S.Col3) 
output inserted.Col1, S.Col4;