0

使用基于集合的操作找不到任何关于此的内容。不确定我是否走在正确的轨道上,但我对如何做到这一点有两个猜测,但我不确定我是否接近,或者 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

注意:我必须使用基于集合的操作才能获得全额信用

4

2 回答 2

1

可能更像

select customerid 
from customer
MINUS
select customerid
from custorder;

您需要从集合中减去相同类型的值

于 2017-10-11T14:25:31.500 回答
1

我会使用not exists

select c.*
from customer c
where not exists (select 1
                  from custorder co
                  where co.customerid = c.customerid
                 );

not in你可以用and left join/做类似的事情where

基于集合的方法是:

SELECT customerid
FROM customer
MINUS
SELECT customerid
FROM custorder;

第一种方法的优点是您可以从中选择其他列customer

于 2017-10-11T14:25:33.143 回答