Mysql SQL子查询练习:显示姓名字母顺序低于客户姓名的销售人员

Mysql SQL子查询练习:显示姓名字母顺序低于客户姓名的销售人员,mysql,sql-server,Mysql,Sql Server,这是关于w3resource的问题: 您可以在上面的链接上看到表的内容。 这是我的解决方案: 我只收到一个叫Jame Hoog的推销员。 这是网站的解决方案: SELECT * FROM salesman a WHERE EXISTS (SELECT * FROM CUSTOMER b WHERE a.name < b.cust_name); 我真的不明白他们为什么使用EXISTS,我认为我的解决方案在逻辑上仍然与他们的解决方案相同。请告

这是关于w3resource的问题: 您可以在上面的链接上看到表的内容。 这是我的解决方案:

我只收到一个叫Jame Hoog的推销员。 这是网站的解决方案:

SELECT *  
FROM salesman a  
WHERE EXISTS  
   (SELECT *  
    FROM CUSTOMER b  
    WHERE  a.name  < b.cust_name);  

我真的不明白他们为什么使用EXISTS,我认为我的解决方案在逻辑上仍然与他们的解决方案相同。请告诉我我的解决方案有什么问题。请

正如我将解释的那样,这两个问题是不同的。您的查询或单记录结果集没有问题,如本演示所示:

此查询查找每个至少有一个客户的销售人员,其姓名在词典中大于自己的姓名。只有销售员James Hoog的名字在词典上比他的任何客户都少


另一方面,该网站的查询是从saller表中的每条记录中查找比任何客户(无论是他自己的还是其他人的)都少的销售人员姓名。这是一个比查询中使用的要求宽松得多的要求。这里的逻辑是保留任何销售人员,因为存在任何客户的名字大于销售人员的名字。只有Pit Alex和Paul Adam不符合这一要求,没有客户的姓氏以字母“P”或任何大于该字母开头。

为什么不问问他们?销售人员ID是两个表之间的连接栏吗?@Tim Biegeleisen是的,这是网站的答案似乎并不正确。它会把所有销售人员都带到那里,那里有按字母顺序排在销售人员后面的客户。事实上,只有你。谢谢你,我理解这个问题。我可以将我的查询改为:SELECT*FROM saller,其中NAMESELECT * FROM salesman a WHERE EXISTS (SELECT * FROM CUSTOMER b WHERE a.name < b.cust_name);