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 Insert Into Exists-向现有表添加外键_Sql_Insert_Exists - Fatal编程技术网

SQL Insert Into Exists-向现有表添加外键

SQL Insert Into Exists-向现有表添加外键,sql,insert,exists,Sql,Insert,Exists,我试图将一个键从一个表添加到另一个表,以便创建一对多关系。我要添加外键的表当前包含员工的名字和姓氏,但没有ID。我想查询员工表,根据他们的名字和姓氏查找ID,然后将其添加到伤害表中 我不断发现以下错误: The multi-part identifier "InjuryOLD.FirstName" could not be bound. The multi-part identifier "dbo.InjuryOLD.LastName" could not be bound. 下面是SQL语句

我试图将一个键从一个表添加到另一个表,以便创建一对多关系。我要添加外键的表当前包含员工的名字和姓氏,但没有ID。我想查询员工表,根据他们的名字和姓氏查找ID,然后将其添加到伤害表中

我不断发现以下错误:

The multi-part identifier "InjuryOLD.FirstName" could not be bound.
The multi-part identifier "dbo.InjuryOLD.LastName" could not be bound.
下面是SQL语句:

Insert into dbo.InjuryOLD(dbo.InjuryOLD.EmpID)
Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select dbo.EmployeeInformation.EmpID from dbo.EmployeeInformation
             where dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
             and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)

我已经确保我引用的表和列没有拼写错误,而且我知道两名员工可能有相同的名字。但是,在这种情况下并非如此。
SELECT
部分
INSERT
语句应始终独立工作

所以

…不起作用,因为两个FROM子句中均未引用
dbo.injuryld
。您可能想将
dbo.injuryld
放在Exists子查询的from子句中,而不是重复
EmployeeInformation

Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select 1 from dbo.InjuryOLD  
             where
                 dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
                 and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)

这运行良好,不会抛出错误,但它没有给我想要的结果。它没有返回任何值,正在查询伤害表中的ID,我想查询employee表中的ID。您语句中的“从中选择1”是做什么的?另外,也许“exists”不是我需要使用的命令。你知道吗?它查询EmployeeInformation中的ID,但只包括根据名字和姓氏在InjuryLD表中找到匹配项的位置。WRT
select1
在exists语句中,所以我总是写
select1
,这样我就不必思考了。你是对的。它没有返回任何结果,因为我在employee表中向后标记了名字和姓氏。谢谢你的帮助。
Select dbo.EmployeeInformation.EmpID
From EmployeeInformation
Where exists(select 1 from dbo.InjuryOLD  
             where
                 dbo.EmployeeInformation.FirstName = dbo.InjuryOLD.FirstName 
                 and dbo.EmployeeInformation.LastName = dbo.InjuryOLD.LastName)