0

我正在运行一个简单的查询:

select employeeId, address, salary
from salaryTable inner join addressTable
on salaryTable.employeeId=addressTable.employeeId
;

我收到以下错误:

ERROR 1052 (23000): Column 'employeeId' in field list is ambiguous

为了解决这个问题,我需要限定employeeIdselect 子句中的列以指示它来自哪个表。

现在,对于内部连接来说,这种错误检查不是多余的吗?我的意思是,内连接返回employeeIds 匹配的交集,那么为什么我需要在 select 子句中限定它呢?

4

1 回答 1

3

检查根本不是多余的。

尽管两个表中的可能相同,但类型可能不同。例如,一个可能是varchar(10),另一个是varchar(100)。最后的长度应该是多少?SQL 需要知道要为模板使用哪个表。

当涉及不同的基本类型时,情况会更糟。您可以将字段作为整数存储在一个表中,而将 a 存储在另一个表varchar(255)中。或者——恐怖的恐怖——作为float.

于 2013-08-26T22:35:25.517 回答