左连接查询不起作用
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
。
为什么要使用 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);
我有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
。
为什么要使用 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);