问题描述
客户:
+------------+--------------------+--------------------+--------------+
| CustomerID | Name | Address | City |
+------------+--------------------+--------------------+--------------+
| 1 | Julie Smith | 25 Oak Street | Airport West |
| 2 | Alan Wong | 1/47 Haines Avenue | Box Hill |
| 3 | Michelle Arthur | 357 north Road | Yarraville |
| 4 | Geogrge Napolitano | 177 Melbourne Road | Coburg |
+------------+--------------------+--------------------+--------------+
订单:
+---------+------------+--------+------------+
| OrderID | CustomerID | Amount | Date |
+---------+------------+--------+------------+
| 1 | 3 | 69.98 | 2019-04-02 |
| 2 | 1 | 49.99 | 2019-04-15 |
| 3 | 2 | 74.99 | 2019-05-19 |
| 4 | 3 | 24.99 | 2019-05-01 |
+---------+------------+--------+------------+
现在,我只想选择没有下订单(OrderID == null
)的那些客户。那只是Geogrge Napolitano
。所以我可以使用2种方式:
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;
现在对我来说。第一种情况(=
)中的Customers.CustomerID = Orders.CustomerID
似乎与ID的USING()
完全相同。但是总是这样吗?在其他情况下,我可以使用MysqL函数USING()
吗?
解决方法
要使用“使用”,连接两个表的列名必须相同。
所以
on Customers.CustomerID = Orders.CustomerID
等于
using(CustomerID)
当两列名称相同时。