为什么在SQL中使用JOIN以及何时使用它?

时间:2016-06-06 19:15:31

标签: sql

所以,如果我问过以下问题:

撰写一份SQL语句,查找指定一名推销员的客户名单,这些客户从公司获得的佣金超过12%

表: 客户

customer_id  cust_name     city        grade       salesman_id
-----------  ------------  ----------  ----------  -----------
3002         Nick Rimando  New York    100         5001
3005         Graham Zusi   California  200         5002
3001         Brad Guzan    London      100         5005
3004         Fabian Johns  Paris       300         5006
3007         Brad Davis    New York    200         5001
3009         Geoff Camero  Berlin      100         5003
3008         Julian Green  London      300         5002
3003         Jozy Altidor  Moncow      200         5007

推销员

salesman_id  name        city        commission
-----------  ----------  ----------  ----------
5001         James Hoog  New York    0.15
5002         Nail Knite  Paris       0.13
5005         Pit Alex    London      0.11
5006         Mc Lyon     Paris       0.14
5003         Lauson Hen  San Jose    0.12
5007         Paul Adam   Rome        0.13

以下方法之间有什么不同吗?如果是这样,有什么不同?因为最终结果是相同的

如果两者都相同,为什么要使用INNER JOIN句子呢?第一个解决方案对我来说更难接近

select customer.cust_name, salesman.name, salesman.commission
from customer, salesman
where salesman.commission > 0.12 and customer.salesman_id = salesman.salesman_id

-

select customer.cust_name, salesman.name, salesman.commission
from customer INNER JOIN
     salesman
     ON customer.salesman_id = salesman.salesman_id
where salesman.commission > 0.12 

非常感谢

3 个答案:

答案 0 :(得分:0)

"更难"解决方案是您不习惯的解决方案。这些天世界上大多数人都使用INNER JOIN,所以如果你想编写对其他程序员来说更普遍可读的代码,你应该使用INNER JOIN

答案 1 :(得分:0)

您没有指定您要求的数据库平台,但对于MS SQL Server,至少第一种形式(隐式连接)已弃用。例如,见:

https://msdn.microsoft.com/en-us/library/dd172122(v=vs.100).aspx

https://sqlblog.org/2009/10/08/bad-habits-to-kick-using-old-style-joins

对我来说,个人显式联接更容易编写和阅读。

另外,因为它是一种弃用的语法,所以要做的是现在习惯于隐式连接,因为较新版本的SQL Server不支持旧语法。

答案 2 :(得分:0)

结果是相同的,因为查询基本上是相同的,因为差异纯粹是符号,在这种关注中联接类型(内部联接)的指示清楚地表明了表之间存在的那种关系。

使用明确的关系是优选的..并且符合最常用的标准指南sql raccomendation