设有购买表(顾客号,商品号,购买时间)。现要查询2012年顾客A购买了但顾客B没有购买的商品。有下列查询语句: Ⅰ.SELECT 商品号 FROM 购买表 WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′A′ AND 商

admin2021-09-16  3

问题 设有购买表(顾客号,商品号,购买时间)。现要查询2012年顾客A购买了但顾客B没有购买的商品。有下列查询语句:
Ⅰ.SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′A′
    AND 商品号 NOT IN(
    SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′B′)
Ⅱ.SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′A′
    EXCEPT
    SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′B′
Ⅲ.SELECT 商品号 FROM购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′A′
    INTERSECT
    SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号= ′B′
Ⅳ.SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 = ′A′
    UNION
    SELECT 商品号 FROM 购买表
    WHERE YEAR(购买时间)=′2012′AND 顾客号 <>′B′
上述语句中,能够实现该查询要求的是(    )。

选项 A、仅Ⅰ和Ⅱ
B、仅Ⅰ和Ⅲ
C、仅Ⅰ和Ⅳ
D、全部

答案A

解析 Ⅲ选项中INTERSECT返回两个集合皆有的数据,该SQL语句返回顾客A和B都购:买的商品号,不符合题意;Ⅳ选项中的UNION查询出了顾客A购买的商品,通过UNION关键字合并了顾客B没有购买的商品,因此总的视图为顾客A购买的商品和B没有购买的商品总和,不符合要求。Ⅰ、Ⅱ实现的是顾客A购买商品集合与顾客B购买商品集合的差集。因此满足要求的为Ⅰ和Ⅱ,因此选择A选项
转载请注明原文地址:https://kaotiyun.com/show/DXeZ777K
0

相关试题推荐
最新回复(0)