You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

获取同时从Sean和Jean处采购的客户姓名的SQL报错求助

修正你的Oracle SQL查询问题

首先,你的查询报错的核心原因是关联条件里引用了外部无法访问的表别名:在最后的ON C.CustomerID = A.CustomerID中,A是嵌套子查询里的表别名,外部查询根本识别不到它,应该换成派生表的别名CID对应的字段CID.CustomerID。

另外,虽然你的INTERSECT子查询逻辑是对的,但可以稍微简化一下写法。下面是修正后的完整SQL:

SELECT C.FirstName, C.LastName
FROM Customer C
INNER JOIN (
    SELECT DISTINCT A.CustomerID
    FROM Account A
    INNER JOIN Salesman S ON A.SalesmanNo = S.SalesmanNo
    WHERE S.empName = 'Sean'
    INTERSECT
    SELECT DISTINCT A.CustomerID
    FROM Account A
    INNER JOIN Salesman S ON A.SalesmanNo = S.SalesmanNo
    WHERE S.empName = 'Jean'
) AS CID ON C.CustomerID = CID.CustomerID;

额外优化方案:用GROUP BY+HAVING替代INTERSECT

对于这种"同时满足多个条件"的需求,用GROUP BY统计的方式通常更高效,尤其是数据量较大的时候:

SELECT C.FirstName, C.LastName
FROM Customer C
INNER JOIN Account A ON C.CustomerID = A.CustomerID
INNER JOIN Salesman S ON A.SalesmanNo = S.SalesmanNo
WHERE S.empName IN ('Sean', 'Jean')
GROUP BY C.CustomerID, C.FirstName, C.LastName
HAVING COUNT(DISTINCT S.empName) = 2;

这个逻辑是:先筛选出和Sean、Jean相关的账户记录,然后按客户分组,只保留同时关联了两个销售员的客户(通过COUNT(DISTINCT S.empName) = 2确保两个销售员都存在)。

内容的提问来源于stack exchange,提问作者derrick

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.09 17:08:16