我正试图编写一个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.