我从我的同事那里得到一个问题,这可能是一个愚蠢的问题,但我当场无法提供答案。
我有以下查询
SELECT sc.custid, contactname, orderid, empid
FROM Sales.Customers sc
INNER JOIN Sales.Orders so ON sc.custid = so.custid;
custid
显而易见,它可以在两个表格中找到。 contactname
属于Sales.Customers
表,orderid
和empid
属于Sales.Orders
。到目前为止一切都很好。
在custid
语句的开头从SELECT
中取出别名会引发错误,说明名称不明确,这是正确的,因为它存在于两个表中。但是,使用别名来定义要检索的custid
以及从哪些表中检索,之后我没有被强制使用其他三列的别名并且查询成功完成。为什么?
我是SQL的初学者,所以要对问题进行处理。感谢
答案 0 :(得分:0)
您不需要在其他列中明确指定别名的原因是因为其他列在查询中指定的所有表中都是唯一的,并且可以在没有表名的情况下进行标识。每当它不明确时,您必须指定应该使用哪个表格,就像您的custId
列一样。在你的情况下:
sc.custId is same as Sales.Customer.custId
您可能已经注意到,使用alias
的一个好处是它需要更少的输入。