使用sql连接时,表名总是必须在字段前面吗?

时间:2017-05-25 12:26:38

标签: sql sql-server

说我有疑问:

select 
    Last_Name, 
    First_Name, 
    e.EmployeeID
from 
    employee e
join 
    Employee_his eh on e.EmployeeID = eh.EmployeeID

名字和姓氏是员工表的一部分,而employeeId是两者的一部分。

e前添加表别名last_namefirst_name是否会以任何方式更改语句?我想不是,但我被告知它会给我错误的答案。抱歉这个简单的问题,查找起来很难。

2 个答案:

答案 0 :(得分:0)

这是您的查询:

select Last_Name, First_Name, e.EmployeeID
from employee e join
     Employee_his eh
     on e.EmployeeID = eh.EmployeeID;

在这种情况下,需要限定名称,因为EmployeeId -  没有资格 - 会模棱两可。该列将引用哪个表?

如果查询中有多个表,则应该限定所有列名,因此很清楚查询正在执行的操作 - 对于其他读取查询的人以及几个月之后。

我应该注意ANSI SQL有using子句。在许多数据库中,查询可以写成:

select Last_Name, First_Name, EmployeeID
from employee e join
     Employee_his eh
     using (EmployeeId);

但是,SQL Server不支持using子句。

答案 1 :(得分:0)

如果两个表都有一个具有相同名称的字段,那么是,您需要在字段名称前面加上表名或别名。

相关问题