如何不使用join SQL连接表



我正试图编写一个SQL查询从多个表中获取信息并输出最终结果:尚未放置股票请求的所有客户的列表。显示客户端编号就足够了。

我不允许使用内连接或任何类型的连接来实现这一点。

到目前为止,这是我想到的。

SELECT c.clientNum
FROM client AS C, Stock_Request AS SR
WHERE C.clientNum NOT IN SR.ClientNum 

当前尝试没有返回期望的结果。

下面是表格中的信息:

(client) 
INSERT INTO Client (clientName)
VALUES ('Mike');
INSERT INTO Client (clientName)
VALUES ('John');
INSERT INTO Client (clientName)
VALUES ('Sally');
INSERT INTO Client (clientName)
VALUES ('Margret');
INSERT INTO Client (clientName)
VALUES ('Max');
(stock request)
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2020-12-10',1);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2020-05-04',2);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2021-07-06',3);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2021-07-08',4);
INSERT INTO Stock_Request (requestDate, clientNum)
VALUES ('2022-02-07',5);

如有任何帮助,不胜感激。

您可以通过以下代码实现:

SELECT clientNum FROM `client`
WHERE clientNum 
NOT IN (SELECT clientNum FROM stock_request GROUP BY clientNum);

你不需要在主SELECT上指示stock_request表,你只需要使用stock_request表通过使用IN来获取子查询中的所有clientNum,我认为你使用IN的方式是错误的。

查看更多关于MySQL IN Operator.

最新更新