设有购买表(顾客号,商品号,购买时间)。现要查询顾客A与顾客B购买的相同商品。有下列查询语句: Ⅰ.SELECT 商品号 FROM 购买表 WHERE 顾客号 = ′A′ AND 商品号 IN( SELECT 商品号 FROM 购买表 WH

admin2021-07-14  25

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

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

答案B

解析 SQL中的集合操作符IN、EXCEPT、INTERSECT和UNION的用法分别为:①IN,确定给定的值是否与子查询或列表中的值相匹配,选择与列表中的任意一个值匹配的行;②EXCEPT,指在第一个集合中存在,但是不存在于第:二个集合中的数据;⑧INTERSECT,是指在两个集合中都存在的数据;④UNION,操作符用于合并两个或多个SELECT语句的结果集,对于UNION操作符,请注意,UNION内部的SELECT语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条SELECT语句中的列的顺序必须相同。要返回A和B相同的商品,则选项Ⅰ中先查出B购买的商品号,并且使用IN操作符,查出A购买的商品号且该商品号同时也在B购买的商品号结果集中,即满足了A和B都购买的商品号,符合要求。选项Ⅱ中的EXCEPT操作符使得查询出的结果为A购买的商品减去B购买的商品,不符合要求。选项Ⅲ的INTERSECT操作符表示两个结果集都存在的商品号,即既属于A又属于B的商品号,符合要求。选项Ⅳ中的UNION操作符表示两个结果集的合并,即包括A购买的商品也包括B购买的商品,不符合要求。
转载请注明原文地址:https://kaotiyun.com/show/i6eZ777K
0

最新回复(0)