内连接模糊列名检查多余?

时间:2013-08-26 22:30:16

标签: mysql inner-join

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

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

我收到以下错误:

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

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

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

1 个答案:

答案 0 :(得分:3)

检查根本不是多余的。

虽然在两个表中可能相同,但类型可能不是。例如,一个可能是varchar(10)而另一个varchar(100)。最终长度应该是多少? SQL需要知道哪个表用于模板。

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