在这两个SQL查询之间,其中一个是“正确的”吗? [重复]

问题描述 投票:1回答:1

我正在自学SQL查询。我的问题来自子查询集中的w3resource.com sql练习6。总结问题,我们需要一个查询,该查询显示巴黎服务客户的销售员的佣金。这是给出其列的两个表:


推销员(推销员编号,姓名,城市,佣金)

客户(客户编号,客户名称,城市,等级,销售人员编号)


下面是我编写的两个查询,它们以不同的方式实现了解决方案。我的问题是,是否有两个更“正确”的?在“正确”的基础上考虑性能,标准等。或者两者都一样吗?我问是因为我想在继续进行更复杂的查询时,出于性能/多功能性的原因,我应该坚持使用吗?谢谢

select commission from Salesman
where salesman_id IN
(select salesman_id from Customer
where city = 'Paris')
select commission from Salesman
join Customer on (Salesman.salesman_id = Customer.salesman_id)
where Customer.city = 'Paris'
mysql sql
1个回答
0
投票

他们俩都很好。

就样式而言,两者都有其优点,例如

  • 使用IN子句简化了主要SQL查询(从可读性的角度来看),因为您不必进行联接。如果还有其他几个联接,最好尽可能减少它们,以跟踪发生了什么。
  • 如果您有一个组合键而不是一个salesman_id,则需要使用JOIN。

它们可能会根据您的数据库生成不同的查询计划,但是与大多数代码一样,最好从编写代码的可读性和可维护性入手,并仅优化所需的位。这种事情不会有任何区别。

© www.soinside.com 2019 - 2024. All rights reserved.