【发布时间】:2020-09-02 18:13:39
【问题描述】:
我正在自学 SQL 查询。我的问题来自 w3resource.com 的子查询问题集中的 sql 练习 6。总结这个问题,我们需要一个查询来显示在巴黎为客户服务的销售人员的佣金。下面是两个表,并给出了它们的列:
销售员(salesman_id、姓名、城市、佣金)
客户(customer_id、cust_name、city、grade、salesman_id)
以下是我编写的两个查询,它们以不同的方式实现了解决方案。我的问题是两者中是否有一个更“正确”的?考虑到性能、标准等的“正确”,或者两者都一样好?我问是因为我想当我继续进行更复杂的查询时,出于性能/多功能性的原因,我应该坚持使用一个吗? 谢谢
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 如何解释它们..
-
查询产生不同的结果。如果有多个 Paris-customers 和同一个推销员,您将在第二个查询中多次获得该推销员的佣金。