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
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
如果您确实想使用 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 的解决方案)之间的区别在于,如果同一客户多次购买苹果,则该连接将产生不同的结果。
我相信自我加入应该可以解决您的问题:
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 对结果差异的洞察,因为我怀疑由自连接引起的重复是否是预期的结果。
Select * from records where name in (
select name
from records
where item_purchased='apple'
)