SQL-92使用点运算符进行选择

时间:2019-03-28 16:21:23

标签: sql join tags ansi-sql

在将其标记为重复项之前,我不是在问是否必须完全指定它,而是为什么不指定它并不重要。希望能解决这个问题。现在到问题了。

我是SQL的新手,所以不确定是否有专门的技术术语。

说我有一个包含表的数据库:订单和客户。

订单具有以下类别:OrderID,CustomerID和OrderDate

客户具有以下类别:客户ID,客户名称,联系人名称和国家/地区

然后我有一个SQL查询:

SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID=Customers.CustomerID;

所以我要选择Orders.OrderIDCustomers.CustomerNameOrders.OrderDate FROM Orders表。如果来自“订单”表,为什么在选择Orders.OrderID之前指定OrderDate这是网站的示例,不作解释这个。我不确定它是否与join有关(在示例中),所以这就是为什么我也将它放在标签中。

-谢谢

1 个答案:

答案 0 :(得分:1)

有时在两个表中都找到了字段名称,并且您的DBMS会抛出一个错误,指出该字段不明确。通常,最好明确声明您希望该项目来自哪个表。

使用别名通常会使代码更易于读写:

SELECT ord.OrderID, cus.CustomerName, ord.OrderDate
FROM Orders ord
INNER JOIN Customers cus ON ord.CustomerID=cus.CustomerID;

这些表名很短,但是您可以看到,当表名变得越来越长和越来越复杂时,别名的作用会是多么有用。

显式声明该表的一个好处是,您可以一眼就知道数据来自哪个表。一旦您有来自多个源的数据(无论是否通过联接),如果不在select语句中显示该表,则可能很难准确地确定字段来自哪个表。