我有两个表'talent_empcomp'和'talent_employee_details_v',我需要从'Emp_Compensation'中获取一个值,该值仅存在于'talent_empcomp'表中,但'Emp_Id'在两个表中都很常见且具有相同的值...需要为特定的'Emp_Id'获取'Emp_Compensation' 下面是iam运行的联合查询..但我收到一条错误消息“Column'Emp_Id'在where子句中是不明确的”
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
答案 0 :(得分:1)
首先,您应该使用显式连接语法。其次,您应该使用您定义的表别名:
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”。
答案 1 :(得分:0)
好吧,您正在尝试过滤Emp_Id
列,但它存在于两个表中,因此SQL解释器不知道要过滤哪个列。您需要明确限定列{@ 1}}。
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
条件,您的查询可能会运行得更快。
答案 2 :(得分:0)
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
答案 3 :(得分:0)
运行连接但未指定从哪个表中选择列时,会发生此错误。只需在列名前指定表,如A.Emp_id