单选题 .设有购买表(顾客号,商品号,购买时间)。现要查询顾客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"
上述语句中,能够实现该查询要求的是______。
【正确答案】 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购买的商品,不符合要求。