在mysql中使用()函数有什么用途?

在mysql中使用()函数有什么用途?,mysql,join,left-join,Mysql,Join,Left Join,我有两个表要加入,我可以通过两种方式实现: 顾客: 订单: 现在我只想选择那些没有下订单的客户(OrderID==null)。这仅仅是地理学家纳波利塔诺(Geogrge Napolitano)。因此,我可以使用两种方法: mysql> select Customers.CustomerID, Customers.Name -> from Customers left join Orders -> on Customers.CustomerID = Orders

我有两个表要加入,我可以通过两种方式实现:

顾客:

订单:

现在我只想选择那些没有下订单的客户(
OrderID==null
)。这仅仅是地理学家纳波利塔诺(Geogrge Napolitano)。因此,我可以使用两种方法:

mysql> select Customers.CustomerID, Customers.Name
    -> from Customers left join Orders 
    -> on Customers.CustomerID = Orders.CustomerID
    -> where Orders.OrderID is null;


现在轮到我了。在第一种情况下(
Customers.CustomerID=Orders.CustomerID
),似乎与使用该Id()的
完全相同。但总是这样吗?在其他哪些情况下,我可以使用mysql函数
USING()

为了使用USING,连接两个表的列名必须相同

所以

等于

using(CustomerID)

当列名在两侧都相同时。

因此,对于列名相同的情况,它相当于一种方便的速记。这不是唯一的区别-请参阅重复问题中的公认答案。@ysth Oracle数据库,PostgreSQL和许多其他DBMS支持使用…@ysth USING构造是sql 92标准的一部分,它不是mysqlism。@Shadow nice,有人告诉我不同。令人恼火的是,该标准不免费。在其他什么情况下,我可以使用()使用mysql函数?使用不是一种功能。这是一个条款。而且它不仅仅属于MySQL。在第一种情况下(Customers.CustomerID=Orders.CustomerID),似乎与使用()Id完全相同。完全相同-否。将查询中的
SELECT{columns}FROM…
替换为
SELECT*FROM…
,您将发现一点差异。您可以(也可以不可以)当且仅当联接字段在联接的两侧具有完全相同的名称时,才使用USING子句,并且由于通常的做法是以这种方式命名与id字段相关的字段,因此我猜这是为了简化编码而包含的。
mysql> select Customers.CustomerID, Customers.Name
    -> from Customers left join Orders 
    -> on Customers.CustomerID = Orders.CustomerID
    -> where Orders.OrderID is null;
mysql> select Customers.CustomerID, Customers.Name
    -> from Customers left join Orders
    -> using(CustomerID)
    -> where Orders.OrderID is null;
 on Customers.CustomerID = Orders.CustomerID
using(CustomerID)