所以,如果我问过以下问题:
撰写一份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
非常感谢
答案 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