我正在运行一个简单的查询:
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子句中限定它呢?
答案 0 :(得分:3)
检查根本不是多余的。
虽然值在两个表中可能相同,但类型可能不是。例如,一个可能是varchar(10)
而另一个varchar(100)
。最终长度应该是多少? SQL需要知道哪个表用于模板。
当涉及不同的基本类型时,情况更糟。您可以将字段存储为一个表中的整数,将varchar(255)
存储在另一个表中。或者 - 恐怖的恐怖 - 作为float
。