使用基于集合的操作无法找到任何内容。 不确定我是否在正确的轨道上,但我有2个猜测如何做到这一点,但我不确定我是否接近,或者如果MINUS是正确的基于集合的操作:
SELECT customerid
FROM customer
MINUS
SELECT orderid
FROM custorder
WHERE custorder IS NULL;
或
SELECT customerid
FROM customer
MINUS
SELECT orderid
FROM custorder;
关于如何改进或改变什么的建议?任何帮助表示赞赏。 有人还可以解释何时在类似的样本上使用UNION,UNION ALL或INTERSECT吗?
另外,我不确定我是否需要2个不同的表格。在此数据库中,其中2个表是CUSTOMER(具有customerid)和CUSTORDER(具有customerid和orderid)。如果您想查看以下内容,请参阅表格值的屏幕截图:https://imgur.com/a/vHMC4
注意:我必须仅使用基于集合的操作以获得完整的信用
答案 0 :(得分:1)
可能更像是
select customerid
from customer
MINUS
select customerid
from custorder;
你需要从集合中删除相同类型的值
答案 1 :(得分:1)
我会使用not exists
:
select c.*
from customer c
where not exists (select 1
from custorder co
where co.customerid = c.customerid
);
您可以使用not in
和left join
/ where
执行类似的操作。
基于集合的方法是:
SELECT customerid
FROM customer
MINUS
SELECT customerid
FROM custorder;
第一种方法的优点是您可以从customer
中选择其他列。