1

Sql newb 所以我试图解决这个问题:

我提取购买特定商品的客户名称列表:

select r.name
from records r
where r.item_purchased='apple'

现在我想获取客户列表并提取他们购买的所有物品的记录,但我无法克服错误。我试过这样的事情:

with customer_list as
(above)
select r.*
from records r
where r.name=customer_list
4

3 回答 3

2

如果您确实想使用 CTE,这应该可以:

with customer_list as
(
  select r.name
  from records r
  where r.item_purchased='apple'
)
select r.*
from records r
where r.name in (select name from customer_list)

这与 JOIN(例如 Michael 的解决方案)之间的区别在于,如果同一客户多次购买苹果,则该连接将产生不同的结果。

于 2012-10-19T16:06:09.100 回答
2

我相信自我加入应该可以解决您的问题:

select distinct r2.*
from records r
join records r2
    on r2.name = r.name
where r.item_purchased='apple'

编辑:添加了一个DISTINCT基于@a_horse_with_no_name 对结果差异的洞察,因为我怀疑由自连接引起的重复是否是预期的结果。

于 2012-10-19T15:41:08.620 回答
1
Select * from records where name in (
                       select name
                         from records 
                        where item_purchased='apple'
)
于 2012-10-19T15:41:54.963 回答