左连接查询不起作用

Left Join query not working

我有2张桌子。

Table 1:
ID     Name      Age       PhoneNumber 
12     Joe       25        873827382
23     Bob       28        928398233
34     Jane      23        237828883


Table 2:
ID     Agent       QuantitySold    
12      A1            100
23      B1            300
12      C1            600
34      A2            400
34      B1            800
23      B2            900   

我想显示从未销售过数量不等于 800 的员工的所有详细信息。

SELECT a.ID, a.Name, a.Age, a.PhoneNumber
FROM table1 a LEFT JOIN table2 b
ON a.ID= b.ID AND b.quantity <> 800

我想要一个没有 ID 34 的结果集。但我似乎无法做到这一点。有帮助吗?

您可以在没有任何 JOIN 的情况下使用 NOT EXISTS

SELECT a.ID
     , a.Name
     , a.Age
     , a.PhoneNumber
FROM table1 a
WHERE NOT EXISTS (SELECT * FROM table2 WHERE ID = a.ID AND QuantitySold = 800)

顺便说一下,列名是QuantitySold,不是quantity

JSFiddle

为什么要使用 Left Join。而是使用内部连接。像这样:-

SELECT a.ID, a.Name, a.Age, a.PhoneNumber, SUM(b.quantity)
FROM table1 a JOIN table2 b
ON a.ID= b.ID 
GROUP BY b.Agent
HAVING SUM(b.quantity) <> 800

您需要将 Left Join 更改为 Inner Join

Left Join 将带来 table1 的所有行,即使他从未进行过 sales。我将使用 Exists.

来做到这一点
SELECT a.ID,
       a.Name,
       a.Age,
       a.PhoneNumber
FROM   table1 a
WHERE  EXISTS (SELECT 1
               FROM   table2 b
               WHERE  a.ID = b.ID
                      AND b.quantity <> 800) 

这终于奏效了。

SELECT a.ID
     , a.Name
     , a.Age
     , a.PhoneNumber
FROM table1 a
WHERE a.ID NOT IN (SELECT ID FROM table2 QuantitySold = 800);