我有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的结果集。但我似乎无法实现这一目标。有什么帮助吗?

最佳答案

您需要将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)

关于mysql - 左联接查询不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28233168/

10-09 17:30
查看更多