题解 | #返回购买价格为 10 美元或以上产品的顾客列表#
返回购买价格为 10 美元或以上产品的顾客列表
http://www.nowcoder.com/practice/827eb2a210c64ccdb8ec28fe4c50c246
解法一:创建子表 一开始我是打算用JOIN直接连接表OrderItems和表Orders,后面发现先从表OrderItems中筛选出价格在10美元以上的商品再与表Orders进行连接运行效率会更快(当然这与题目要求的子查询不太相关)。
SELECT DISTINCT cust_id
FROM (
SELECT order_num
FROM OrderItems
WHERE item_price >= 10
) o JOIN Orders USING(order_num)
注意:同一顾客可能会多次购买十美元及以上的商品,故需要用DISTINCT去重。
解法二:使用子查询
SELECT DISTINCT cust_id
FROM Orders
WHERE order_num IN (
SELECT order_num
FROM OrderItems
WHERE item_price >= 10
)