SQL链接表,插入到&;加入
我是新来的,所以请温柔一点 我们一直在使用SQLServer2008R2根据从另一台服务器上更大的专有SQL数据库中提取的信息创建一个工作数据库。我可以使用INSERT into函数将信息拉入新表中,但当我试图通过联接从链接数据库的另一个表中添加链接字段时,我一无所获。毫无疑问,以下是我的问题,这是一个全新的问题:SQL链接表,插入到&;加入,sql,join,linked-server,insert-into,Sql,Join,Linked Server,Insert Into,我是新来的,所以请温柔一点 我们一直在使用SQLServer2008R2根据从另一台服务器上更大的专有SQL数据库中提取的信息创建一个工作数据库。我可以使用INSERT into函数将信息拉入新表中,但当我试图通过联接从链接数据库的另一个表中添加链接字段时,我一无所获。毫无疑问,以下是我的问题,这是一个全新的问题: INSERT INTO [Cust_Info].[dbo].[form_data] (CustNo ,LastName ,FirstN
INSERT INTO [Cust_Info].[dbo].[form_data]
(CustNo
,LastName
,FirstName
,Add1
,Add2
,City
,State
,Zip
,Phone1
,Phone2
,Email)
SELECT [CustNo]
,[LastName]
,[FirstName]
,[Add1]
,[Add2]
,[City]
,[State]
,[Zip]
,[Phone1]
,[Phone2]
,[Email]
FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer]
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv]
ON [Cust_Info].[dbo].[form_data].[CustNo]=[XYZ-SERVER-1\ETC].[Service].[dbo].
[EmailInv].[CustNo]
我确信我犯了一个非常严重的错误,但是我在“on”行上继续得到“Msg 4104”,在select语句的第一行上得到一个“Msg 209”(模棱两可的列名'CustNo')
我已经在不同的论坛上整理了很多相关的帖子,据我介绍,这应该是可行的。你们中的一个兽医能把灯给我看一下吗
提前谢谢。两个表中都有custno。应在其前面加上Customer.CustNo以标识源表:
select Customer.CustNo, . . .
显然,表之间没有复制其他列。一般来说,在执行联接时,最好将所有引用列(任何位置)与其源表放在前面。这是因为
CustNo
是两个表中的一个字段,因此SQL不知道选择哪一个
尝试:
嗯,我注意到的一件事是,您正试图将
插入到您的表[Cust\u Info].[dbo].[form\u data]
中,但您没有在JOIN
语句中加入此表中的。因此,您的连接语法似乎不正确。我猜您正试图以这种方式加入,请注意我使用了别名:
INSERT INTO [Cust_Info].[dbo].[form_data]
(
CustNo
,LastName
,FirstName
,Add1
,Add2
,City
,State
,Zip
,Phone1
,Phone2
,Email
)
SELECT [CustNo] -- which table is this from select the alias?
,[LastName]
,[FirstName]
,[Add1]
,[Add2]
,[City]
,[State]
,[Zip]
,[Phone1]
,[Phone2]
,[Email]
FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer] c
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv] e
ON c.[CustNo]=e.[CustNo]
但您还需要指定每个列来自哪个表。例如,SELECT
中的[CustNo]
在两个表中,您需要哪一个表?谢谢您的快速回复。这是接近需要的!非常感谢!我想知道为什么我会被投反对票。请给我留个电话comment@duke_of_dork为什么这个答案是“接近”的,对你来说不正确?这是一个联接,因此两个表中的CustNo字段将是相同的。你选哪一个不合适——我没有投反对票。我也需要这些信息,但是蓝脚怪一针见血。我确实需要区分这些表,但别名的概念使我的查询能够工作。因此,为什么你很接近,但我没有选择你作为我的答案。我仍然非常感谢您的意见。:)这就成功了。将别名分配给Customer和EmailInv表,并分别位于SELECT语句C或E中所有字段的前面。我的最后一行是:从[XYZ-SERVER-1\ETC].[Service].[dbo].[Customer]AS C内部加入[XYZ-SERVER-1\ESC].[Service].[dbo].[EmailInv]AS E ON C.[CustNo]=E.[CustNo]现在只需要获得数据以进行合作即可再次感谢@HLGEM感谢您的编辑,显然在发布之前我没有完全重读此内容。:)
INSERT INTO [Cust_Info].[dbo].[form_data]
(
CustNo
,LastName
,FirstName
,Add1
,Add2
,City
,State
,Zip
,Phone1
,Phone2
,Email
)
SELECT [CustNo] -- which table is this from select the alias?
,[LastName]
,[FirstName]
,[Add1]
,[Add2]
,[City]
,[State]
,[Zip]
,[Phone1]
,[Phone2]
,[Email]
FROM [XYZ-SERVER-1\ETC].[Service].[dbo].[Customer] c
JOIN [XYZ-SERVER-1\ETC].[Service].[dbo].[EmailInv] e
ON c.[CustNo]=e.[CustNo]