gpt4 book ai didi

mysql - 排除查询

转载 作者:行者123 更新时间:2023-11-29 10:18:31 24 4
gpt4 key购买 nike

我正在尝试编写一个查询来查找所有没有与公司下订单的销售人员姓名。

我的查询是:

SELECT Name
FROM Salesperson
JOIN Orders ON orders.salesperson_id = Salesperson.ID
WHERE cust_id <> 4
GROUP BY Name;

虽然这有点作用,但我觉得我应该更明确。如果您能帮助指导我出错的地方,我将不胜感激。我期待看到的是...

Abe
Chris
Dan
Joe

表格是:

销售人员

ID    Name    Age    Salary
1 Abe 61 140000
2 Bob 34 44000
5 Chris 34 40000
7 Dan 41 52000
8 Ken 57 115000
11 Joe 38 38000

客户

ID    Name    City    Industry
4 Samsonic plesant J
6 Panasung oaktown J
7 Samony Jackson B
9 Orange Jackson B

订单

Number    Date    cust_id    salesperson_id    amount
10 1996-08-02 4 2 540
20 1999-01-30 4 8 1800
30 1995-07-14 9 1 460
40 1998-01-29 7 2 2400
50 1998-02-03 6 7 600
60 1998-03-02 6 7 720
70 1998-05-06 9 7 150

最佳答案

将这两个表连接在一起时,您只能获得两个表中都显示的 id,且其 cust_id 值不为 4,因为您的连接不是 OUTER JOIN,即 ids = 1, 2, 7

然后,当您输入SELECT Name时,您将获得:

Abe   // id = 1
Bob // id = 2
Dan // id = 7

(在这种情况下,GROUP BY 语句完全没用,因为您没有使用任何 COUNT(...)SUM(... )SELECT 中的类似内容)
如果您想避免重复,可以使用 SELECT DISTINCT 而不是 SELECT 来替换 GROUP BY 语句。

从您期望的结果来看,我想您希望排除使用 cust_id = 4 下订单的所有销售人员 ID。

这应该可以顺利进行:

SELECT DISTINCT Name
FROM SalesPerson
WHERE ID NOT IN (SELECT salesperson_id FROM Orders WHERE cust_id = 4)

关于mysql - 排除查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49742884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com