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;