Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.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链接表,插入到&;加入_Sql_Join_Linked Server_Insert Into - Fatal编程技术网

SQL链接表,插入到&;加入

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

我是新来的,所以请温柔一点

我们一直在使用SQLServer2008R2根据从另一台服务器上更大的专有SQL数据库中提取的信息创建一个工作数据库。我可以使用INSERT into函数将信息拉入新表中,但当我试图通过联接从链接数据库的另一个表中添加链接字段时,我一无所获。毫无疑问,以下是我的问题,这是一个全新的问题:

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]