Sql连接两个表并获取一个值


Sql Joining two tables and fetching a value

我有两个表'talent_empcomp'和'talent_Eemploye_details_v',其中我需要从'Emp_Compensation'中获取一个值,该值仅存在于'talent-empcomp'表中,但'Emp_Id'在两个表中都很常见,并且具有相同的值。。我需要为特定的"Emp_Id"获取"Emp_Compensetion"下面是正在运行的联合查询iam。。但是我收到一条错误消息"where子句中的列'Emp_Id'不明确"

SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and Emp_Id='$Emp_Id' ORDER BY Emp_FirstName

首先,应该使用显式联接语法。其次,您应该使用您定义的表别名:

SELECT A.*, B.Emp_Compensation
FROM talent_employee_details_v A join
     talent_empcomp B
     on a.EmpId = B.Emp_id
WHERE A.Emp_FirstName like '%' and A.Emp_Id='$Emp_Id'
ORDER BY A.Emp_FirstName 

将别名放在列引用之前是个好主意,这样您就可以知道值的来源。我猜这些名字来自"A"。

您正在尝试筛选Emp_Id列,但它在两个表中都存在,因此SQL解释器不知道要筛选哪一列。您需要像B.Emp_Id一样明确限定列。

SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and B.Emp_Id='$Emp_Id' ORDER BY Emp_FirstName

顺便说一句:如果删除like %条件,您的查询可能会运行得更快。

SELECT A.*, B.Emp_Compensation 
FROM talent_employee_details_v A, talent_empcomp B   
WHERE Emp_FirstName like '%' and B.Emp_Id='$Emp_Id' ORDER BY Emp_FirstName

当您运行联接并且没有指定从哪个表中选择列时,就会发生此错误。只需在列名之前指定表,如A.Emp_id