别名如何在SQL中工作?

时间:2017-11-05 17:25:35

标签: sql-server

我从我的同事那里得到一个问题,这可能是一个愚蠢的问题,但我当场无法提供答案。

我有以下查询

SELECT sc.custid, contactname, orderid, empid
FROM Sales.Customers sc
INNER JOIN Sales.Orders so ON sc.custid = so.custid;

custid显而易见,它可以在两个表格中找到。 contactname属于Sales.Customers表,orderidempid属于Sales.Orders。到目前为止一切都很好。

custid语句的开头从SELECT中取出别名会引发错误,说明名称不明确,这是正确的,因为它存在于两个表中。但是,使用别名来定义要检索的custid以及从哪些表中检索,之后我没有被强制使用其他三列的别名并且查询成功完成。为什么?

我是SQL的初学者,所以要对问题进行处理。感谢

1 个答案:

答案 0 :(得分:0)

您不需要在其他列中明确指定别名的原因是因为其他列在查询中指定的所有表中都是唯一的,并且可以在没有表名的情况下进行标识。每当它不明确时,您必须指定应该使用哪个表格,就像您的custId列一样。在你的情况下:

sc.custId is same as Sales.Customer.custId

您可能已经注意到,使用alias的一个好处是它需要更少的输入。